2012-09-04 41 views
3

我有一個表單,我需要驗證兩個單選按鈕。jQuery驗證單選按鈕之間的條件條件

有一個值將驗證秒,其中第二個值必須等於或高於第一個值。

例如:如果first的值是2,second的值必須是2或更高。

Firts無線電

<input name="item1grupoangm" id="item1grupoangm1" type="radio" value="1" />1 &nbsp; 
<input name="item1grupoangm" id="item1grupoangm2" type="radio" value="2" />2 &nbsp; 
<input name="item1grupoangm" id="item1grupoangm3" type="radio" value="3" />3 

第二無線電

<input name="item1nivelbioseguranca" id="item1nivelbioseguranca1" type="radio" value="1" />1 &nbsp; 
<input name="item1nivelbioseguranca" id="item1nivelbioseguranca2" type="radio" value="2" />2 &nbsp; 
<input name="item1nivelbioseguranca" id="item1nivelbioseguranca3" type="radio" value="3" />3 &nbsp; 

我想這一點:

item1nivelbioseguranca: { 
    required: true, 
    remote: { 
     url: "valida_nb_angm.php", 
     type: "post", 
     data: { 
      item1grupoangm: function() { 
       return $("input[name='item1grupoangm']:checked").val() 
      }, 
      item1nivelbioseguranca: function() { 
       return $("input[name='item1nivelbioseguranca']:checked").val() 
      }, 
     } 
    } 
}, 

valida_nb_angm.php的代碼:

$item1grupoangm = $_POST['item1grupoangm']; 
    $item1nivelbioseguranca = $_POST['item1nivelbioseguranca']; 

    if ($item1nivelbioseguranca >= $item1grupoangm) 
    echo "true"; 
    else 
    echo "false"; 

但它不能像我想要的那樣工作。只有當我提交表單並且如果我更改了收音機,驗證纔會起作用,直到我刷新頁面。

我希望它能「實時」工作。如果我選擇較低的值,則會出現一條消息,如果我選擇一個相等或更高的值,表單將進行驗證。

對不起,我的英語。

+0

這就是'jQuery.validate'的工作原理。它在默認情況下執行表單提交時的第一個表單驗證。此外,對於這樣簡單的事情,您可能不需要'php'來比較頁面中的2個值。 –

回答

2

首先,添加一個custom methodjQuery.validator

$.validator.addMethod('item1nivelbioseguranca', function() { 
    return +$("input[name='item1nivelbioseguranca']:checked").val() >= +$("input[name='item1grupoangm']:checked").val(); 
}, 'Nível de bio segurança deve ser maior ou igual ao Radio 1'); 

然後設置這兩個領域爲required: true,並連接新定製方法其中之一:

rules: { 
    'item1grupoangm': { 
     required: true 
    }, 
    'item1nivelbioseguranca': { 
     required: true, 
     item1nivelbioseguranca: true 
    } 
} 

然後,使其工作實時,附加change處理程序的輸入,只是呼籲投入.valid()要驗證:

$('input[name="item1grupoangm"], input[name="item1nivelbioseguranca"]').change(function() { 
    var inputs = $('input[name="item1grupoangm"], input[name="item1nivelbioseguranca"]'); 
    if (inputs.filter(':checked').length === 2) inputs.valid(); 
}); 

DEMO

編輯只火實時驗證在兩個無線電被選中之後。

+0

謝謝@ fabricio-matte。它解決了我的問題。謝謝 :) – Junior

0

你有沒有加載jQuery?如果是的話,試試這個:

$("input[name='item1nivelbioseguranca']").change(function(){ 
    var value1=$("input[name='item1grupoangm']:checked").val(); 
    var value2=$("input[name='item1nivelbioseguranca']:checked").val(); 
    if (value2 < value1) { 
     alert "Please make sure you select a value larger than item1grupoangm!"; 
     return false; 
    } 
}); 

忘記反向部分..

$("input[name='item1grupoangm']").change(function(){ 
    var value1=$("input[name='item1grupoangm']:checked").val(); 
    var value2=$("input[name='item1nivelbioseguranca']:checked").val(); 
    if (value2 < value1) { 
     alert "Remember to change the value for item1nivelbioseguranca so it is larger than this value!"; 
    } 
}); 
+0

感謝您的關注 – Junior