Javascript 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"> &

我在我的站点上使用了一个表单,它通过一些简单的JQuery验证进行了验证。问题是,当我更改值时,它并没有提交或做任何事情。这是我的密码:

<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相关)正在阻止表单验证代码正常运行。我一删除它,表单就可以正常工作。不过感谢您的帮助和建议