2013-10-23 216 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