3

そのため、現在 Web フォームに取り組んでおり、特定の値が入力されたら、すべてのフォームの入力を無効にする必要があります。そのドロップダウンがその値に達したらすぐに処理する簡単な方法はありますか? 現在、私はこれをやっています:

setInterval('check()', 5000);
function check() {
// Disable all fields if the answer was no.
if ($("#has_contract").val() == 0) {
    disable();
}
function disable() {
    $("#inputs *").prop('disabled', true);
    alert("There is no contract, please get a contract.");
}

has_contract は私の要素であり、#inputs には、#has_contract の値が 0 の場合に無効にしたいすべての入力が含まれています。**

しかし、これは理想的ではありません。X秒ごとに常にチェックするよりも、これを行うためのより良い方法はありますか?

4

3 に答える 3

0

お客様の要件を完全に理解しているとは言えませんが、これでよろしいでしょうか?

#has_contract以下はそれが要素であると仮定してい<select>ます:

$("#has_contract").change(function() {
    if ($("#has_contract").val() == 0) disable();
});
于 2013-06-27T23:04:23.183 に答える
0

まず、要素を変数としてキャッシュしてから、その変数に対して関数を実行する必要があります。

var myInputs
$(document).ready(function(){
   myInputs = $("#inputs input"); // or '#inputs *' if you're excited about the asterix
});

次に、設定を正しく読んでいれば、ユーザーが契約に対して「はい」を選択するまで、5 秒ごとにアラート ボックスが表示されます。それはかなり面倒で、その後はおそらくあなたとの契約を取りたがらないでしょう。

あなたのページを実際に見なくても、より良い解決策は、ページ上の何らかの送信ボタンをクリックしたときに contract=yes を確認することだと思います。

$('#mySubmitButton').click(function(){
  if ($("#has_contract").val() == 0) {
    disable();
  }
});

しかし、さらに一歩進んで、本当にやりたいことは、契約に同意したらフォームへのアクセスを許可することです。したがって、フォームをデフォルトで無効にし (すべてが無効になるように html にコード化)、フォームを有効にする「はい」ボタンに機能を追加する必要があります。さらに、以前に「はい」をクリックしたことがある場合は、機能を「いいえ」ボタンに添付して、それを再度無効にすることができます。

$('#myYesBtn').click(function(){
  myInputs.prop('disabled', false);
});

$('#myNoBtn').click(function(){
  myInputs.prop('disabled', true);
});
于 2013-06-27T23:20:16.153 に答える