2013-10-23 38 views
0

我有一个表单,我在我的网站上使用它,并验证了一些简单的JQuery验证。问题是,当我更改值时,它并没有提交或做任何事情。这里是我的代码: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> 

任何人都可以看到什么是错的呢?

+0

['.VAL()'](http://api.jquery.com/val/)返回一个字符串 - > ['.parseInt ()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)将成为你的朋友:) – Andreas

+0

谢谢@Andreas,我编辑了代码。尽管如此,仍然不能解决我最初的问题。我已经多次使用这个相同的脚本,没有任何问题,但这次它只是不工作,我不明白为什么? – user2737457

+0

http://jsfiddle.net/zdeZ2/1/ - 做了一些更改,它适用于我 – megawac

回答

0

您需要返回并重新设置窗体的.val()属性,否则将采用.val()的原始值不是radsearch;

不知道你是否真的想更新.val(),或者只是附加一个属性。一些选项:

就在.blur的大括号之前 - >});加上”

$("#radSearch").val(radsearch);

或者:

添加一个隐藏的输入到您的形式与新的ID,如:

<input type='hidden' name='radsearchHidden' />

,然后.blur结束前做同样的:

$("#radsearchHidden").val(radsearch);

0

我做了一些改动你的代码(http://jsfiddle.net/zdeZ2/2/),我会在下面说明:

<div id="radButton" class="searchBoxRight"></div>我假设你有东西在里面=><input id="radButton" class="searchBoxRight" type="button" value="rad button">

我改写了你的验证与模糊如下。正如所建议的那样,在比较之前它将radSearch值校正为一个整数。更改在验证之前删除searchErrorsearchSuccess类。我也为你做了一些优化。

//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 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; 
}); 
+0

感谢您的JSFiddle和说明。我已经尝试了你所说的一切,但它仍然无法正常工作。我运行我的原始代码通过JSFiddle的CSS错误,它工作正常 - http://jsfiddle.net/cL87R/ – user2737457

+0

那么最新的问题是什么? – megawac

+0

这就是我想知道的。 Jquery在我的网站上工作正常,但是这个代码不起作用,即使JSFiddle没有问题 – user2737457