Javascript JQuery已验证表单未提交
我在我的站点上使用了一个表单,它通过一些简单的JQuery验证进行了验证。问题是,当我更改值时,它并没有提交或做任何事情。这是我的密码:Javascript JQuery已验证表单未提交,javascript,jquery,forms,validation,Javascript,Jquery,Forms,Validation,我在我的站点上使用了一个表单,它通过一些简单的JQuery验证进行了验证。问题是,当我更改值时,它并没有提交或做任何事情。这是我的密码: <form id="radForm" method="post" action="events.php?type=rad"> <div class="searchBoxLeft searchBoxRad"></div> <div class="searchBoxMiddle"> &
<form id="radForm" method="post" action="events.php?type=rad">
<div class="searchBoxLeft searchBoxRad"></div>
<div class="searchBoxMiddle">
<input id="radSearch" type="text" class="searchBoxInput searchBoxShort" value="<?php echo $yourradius; ?>" />
<label class="searchBoxLabel">Mile Radius of Your Address</label>
</div>
<div id="radButton" class="searchBoxRight"></div>
<div class="clearLeft"></div>
</form>
<script>
$(document).ready(function()
{
var radsearchok = 0;
//Rad search
$('#radSearch').blur(function()
{
var radsearch=$("#radSearch").val();
if(radsearch < 2){
$('#radSearch').addClass("searchError");
radsearchok = 0;
}
else if(radsearch > 50){
$('#radSearch').addClass("searchError");
radsearchok = 0;
}
else{
$('#radSearch').addClass("searchSuccess");
radsearchok = 1;
}
});
// Submit button action
$('#radButton').click(function()
{
if(radsearchok == 1)
{
$("#radForm").submit();
}
else
{
$('#radSearch').addClass("searchError");
}
return false;
});
//End
});
</script>
您需要返回并再次设置窗体的.val()属性,否则它将采用.val()的原始值而不是radsearch
不确定是否确实要更新.val(),或者只是附加属性。一些选择:
就在.blur-->}的右大括号之前;加上“
$(“#radSearch”).val(radSearch);
或:
使用新ID将隐藏输入添加到表单中,如:
然后在结束之前执行相同的操作。模糊:
$(“#radsearchHidden”).val(radsearch);
我对您的代码()做了一些更改,我将在下面介绍:
我想你有东西在里面=>
我用blur重新编写了您的验证器,如下所示。正如建议的那样,它在比较之前将radSearch值合并为整数。更改在验证之前删除searchError
和searchSuccess
类。我还为您做了一些优化
//Rad search
$('#radSearch').blur(function () {
//remove classes from previous validating
var $this = $(this).removeClass("searchError").removeClass("searchSuccess");
var radsearch = $this.val() | 0; //radsearch is an integer
if (radsearch < 2 || radsearch > 50) {
$this.addClass("searchError");
radsearchok = 0;
} else {
$this.addClass("searchSuccess");
radsearchok = 1;
}
});
//Rad搜索
$('#radSearch').blur(函数(){
//从以前的验证中删除类
var$this=$(this).removeClass(“searchError”).removeClass(“searchSuccess”);
var radsearch=$this.val()| 0;//radsearch是一个整数
如果(radsearch<2 | | radsearch>50){
$this.addClass(“searchError”);
radsearchok=0;
}否则{
$this.addClass(“searchSuccess”);
radsearchok=1;
}
});
可以等效地写为:
//Rad search
$('#radSearch').blur(function () {
var $this = $(this);
var radsearch = $("#radSearch").val() | 0; //radsearch is an integer
var valid = radsearch < 2 || radsearch > 50;
$this.toggleClass("searchError", !valid)
.toggleClass("searchSuccess", valid);
radsearchchok = valid ? 1 : 0;
});
//Rad搜索
$('#radSearch').blur(函数(){
var$this=$(this);
var radsearch=$(“#radsearch”).val()| 0;//radsearch是一个整数
var valid=radsearch<2 | | radsearch>50;
$this.toggleClass(“searchError”!valid)
.toggleClass(“搜索成功”,有效);
radsearchchok=有效?1:0;
});
返回一个字符串->这里是你的朋友:)谢谢@Andreas,我已经编辑了代码。但仍然没有解决我原来的问题。我已经多次使用相同的脚本,没有问题,但这次它不起作用,我不明白为什么?-做了一些更改,它对JSFIDLE和描述的meThanks有效。我没有ried了你说的一切,但它仍然不起作用。我通过JSFIDLE运行了我的原始代码来查找css错误,它工作得很好-那么问题出在哪里?这就是我想知道的。Jquery在我的网站上工作得很好,但这段代码不起作用,即使在我的网站上没有问题JSFiddle@user2737457所有的[id]
您在此代码段中使用的属性在页面上是唯一的?是的。我发现问题实际上是页面顶部未使用的JQuery代码片段(与Fancybox相关)正在阻止表单验证代码正常运行。我一删除它,表单就可以正常工作。不过感谢您的帮助和建议