19

フォームに次の入力コードがあります。

<input maxlength="255" id="information_name" name="information[name]" oninvalid="check(this)" placeholder="Nombre Completo" required="required" size="30" style="width:528px;height:25px;" tabindex="3" type="text">

この javascritp コードで oninvalid メッセージを変更します。

<script>
 function check(input) {
   if (input.value == "") {
     input.setCustomValidity('Debe completar este campo.');
   } else  {
     input.setCustomValidity('Debe corregir este campo.');
   }

 }
</script>

ここに問題があります。送信をクリックしてフィールドが空の場合、フィールドにエラーが表示されるため、フィールドに入力する必要がありますが、フィールドに入力した後、入力が空でなくても警告が表示されます。

私が間違っていることは何ですか?

4

6 に答える 6

9

でカスタム有効性メッセージを設定できますがsetCustomValidity、空白以外の文字列があると、フィールドが無効な値であるかのように動作します。setCustomValidity('')フィールドの無効化された状態をクリアする必要があります。

妥当性が単純でフィールド属性によって制御されている場合は、 を使用object.willValidateしてテストを実行し、カスタム妥当性メッセージを設定できます。

oninvalid="this.setCustomValidity(this.willValidate?'':'your custom message')"

于 2013-02-12T13:59:30.177 に答える
2

setCustomValidity空の文字列ではない値を指定inputすると、 がそのinvalid状態になります。したがって、条件は値をチェックしてから、フィールドをinvalidどちらかに設定しています。フィールドの値が実際に無効な場合のみsetCustomValidity、それ以外の場合は空の文字列に設定します。

<script>
 function check(input) {
   if (input.value == "") {
     input.setCustomValidity('Debe completar este campo.');
   } else  {
     input.setCustomValidity('');
   }
 }
</script>
于 2012-12-27T00:11:52.007 に答える
1

私にとってはうまくいくだけoninvalid="this.setCustomValidity(this.willValidate ? '' :'You must choose the account type from the list')"です。IE で使用している間、多くの問題があります。

于 2016-11-29T20:31:57.720 に答える