3

2つのラジオボタンを検証する必要があるフォームがあります。

1つには、2番目を検証する値があり、2番目の値は1番目以上である必要があります。

例:firstの値が2の場合、secondの値は2以上である必要があります。

Firts Radio

<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";

しかし、それは私が望むようには機能しません。フォームを送信したときのみ、ラジオを変更した場合、ページを更新するまで検証は機能しません。

「リアルタイム」で動作してほしい。低い値を選択するとメッセージが表示され、同じかそれ以上の値を選択するとフォームが検証されます。

私の英語について申し訳ありません。

4

2 に答える 2

2

まず、カスタム メソッドをに追加しjQuery.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、新しいカスタム メソッドをそのうちの 1 つにアタッチします。

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();
});

デモ

両方の無線が選択された後にのみリアルタイム検証を起動するように編集されました。

于 2012-09-04T22:34:48.407 に答える
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!";
   }
});
于 2012-09-04T22:00:41.993 に答える