2016-11-30 7 views
1

私は、入力テキストフィールドに入力されたテキストを検証する必要がある状況があります。これは、HTMLコードです:デフォルトの#txt_bフィールドでjQueryを使用した入力テキスト検証

<div id="err_title" style="display:none;">Please enter a valid Number.</div> 
<input type="radio" id="txt_a-radio" value="valueA" checked="checked"> 
<input type="text" id="txt_a"> 
<input type="radio" id="txt_b-radio" value="valueB"> 
<input type="text" id="txt_b" disabled> 

は#txt_b-ラジオボタン#txt_bをユーザーがクリックすると有効になり、#txt_aが無効になりますと、無効になります。

検証のための条件は次のとおりです。ユーザーが有効になってフィールドに値を入力したら、検証が起こるはず

#txt_a can contain only 12 digit number 
#txt_b can contain only 20 digit number 

その後、どこか外にクリックします。ユーザーが入力した値が有効でない場合、エラーメッセージ#err_titleが表示されます。

ユーザーが#txt_aの値を入力してから#txt_b-ラジオボタンをクリックすると、ユーザーが入力フィールドを切り替えたので検証が行われないとします。この場合、#txt_aを無効にしてtxt_bを有効にする必要があります。

$('#txt_a').change(function() { 
    custNumber = $('#txt_a').val(); expression = /^[0-9]{12}$/; 
    if(custNumber === '') { 
     $("#err_title").css('display', 'none'); 
    } else if ((!custNumber.match(regexp))) { 
     $("#err_title").css('display', 'block'); 
    } else { 
     $("#err_title").css('display', 'none'); 
    } 
}); 
+1

最良の結果を得るには、あなたの努力(あなたのコード)をあなたの問題の詳細。 –

+0

私は次のコードで試してみました: $( '#txt_a')(function(){ \t custNumber = $( '#txt_a')val(); 式=/^ [0-9] {12} $ /; \t if(custNumber === ''){ \t $( "#err_title").css( 'display'、 'none'); \t} else if((!custNumber.match(regexp))){ $( "#err_title")。css( 'display'、 'block'); else { $( "#err_title")。css( 'display'、 'none'); } }); –

答えて

1

$input1 = $('input[name="input1"]'); 
 
$input2 = $('input[name="input2"]'); 
 
$checkbox = $('input[name="checkbox"]'); 
 
    
 

 
$input1.on('change', function(e) { 
 
    var isValid = this.value.length >= 12; 
 
    
 
    this.classList.toggle('notValid', !isValid); 
 
}) 
 

 
$checkbox.on('change', function(e) { 
 
    $input2.prop('disabled', !this.checked); 
 
})
input.notValid { 
 
    border: 1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="input1" /> 
 
<input type="text" name="input2" disabled /> 
 
<input type="checkbox" name="checkbox" />

注:私は、次のコードと試みた

上記の例で 、私はjQueryを使ってvanillia JSを、混合しています。私はそれを避けることをお勧めします - 私はあなたにjQueryを使わないでこのような簡単なことをやってもらうのは簡単です(必ずしもそうではない...)。 基本的に、そのような簡単なことをしたいのなら、私はjQueryをあきらめておくことをお勧めします。

ANSWER:

あなたはjQueryのchangeイベントを探しています。一度入力がゆるくなると、トリガされます。

$(your_input).on('change', function(e) {...})

あなたは(リスナーの内部機能)のような入力の長さを検証することができます

var isValid = this.value.length === 12

同じことが有効/無効に入力して行きます。 あなたは

$(your_checkbox).on('change', function(e) {...})

をcheckboxにイベントリスナーを添付する必要があり、あなたは、チェックボックスの状態を取得することができます:

var isChecked = this.checked

とするために無効に/あなたの入力を可能に

$(your_input).attr('disabled', !isChecked)

+0

私は1つの条件を除いてうまく動作するjQueryの変更機能を使用しようとしました。私はinput1の無効な番号を入力し、すぐにinput2のチェックボックスをクリックすると、変更機能が呼び出され、エラーメッセージが表示されます。 しかし、この特定のシナリオに関する私の要求は、input1に無効な値を入力した後すぐにinput2をクリックすると、入力フィールド1が無効になり、入力フィールド2が有効になるはずです。 –

+0

私は一度賢明な言葉を聞いたことがあります。 ユーザーインターフェイスは冗談のようです。あなたがそれを説明しなければならないなら、それは悪いことです。 あなたは達成しようとしていることを説明しなければならないので、このデザインはおそらく悪いです:P 'change'イベントの代わりに 'input'を使うことをお勧めします。しかし、私はあなたのロジックをハードコードする必要があると思います。 – grzesiekgs

関連する問題