-3

フォームがあり、送信時に特定の値のみを許可しようとしています。
許可されるのは 1 ~ 8、n、および空白です。それだけです。
私は1-8から始めましたが、nと空白についてはわかりません。

function check(form) {
    if (form.scores.value > 8 || form.scores.value <= 0) {
        self.alert(form.scores.value + " is an invalid value! Allowed values are 1 to 8, n and blank");
        form.scores.focus();
    }
}

HTML

<input type="text" name="scores" id="scores" maxlength="1" size="2" value="<%= number %>" />

HTML:

<input type="button" onClick="check(this.form)" value="Edit" />

助けてください

ありがとう

4

1 に答える 1

1

以下のリファクタリングと修正を参照してください。

<script>

function check(form_field)
{

  var allowed = /^[1-8n\s]{1}$/;

  var field = document.getElementById(form_field).value;

  if (field.match(allowed)) {
    document.myform.onsubmit = function() {
     return true;
    }
  } else if (field.length == 0) {
    document.myform.onsubmit = function() {
     return true;
    }
  } else {
   alert(field + " is an invalid value! Allowed values are 1 to 8, n and blank");
  }

}

</script>


<form name="myform" onsubmit="return false">

<input type="text" name="scores" id="scores" maxlength="1" size="2" value="<%= number %>"/>
<input type="submit" onClick="check('scores')" value="Edit" />
</form>

JavaScript の正規表現を使用して値を確認します。「{1}」は必要ないかもしれませんが、一度繰り返されたパターンは単なるパターンであることは明らかです。

check() 関数の仕組みを変更したので、正規表現の部分を自由に取得してください。これにより、フォーム フィールド ID が渡され、そこから値が識別されます。

条件がすべて満たされた場合にのみフォームを送信するようにします。

編集:または、これを行うための素敵なjqueryプラグインのリストボックス
を チェックしてください(@Arkで言及されているように)

それが役立つことを願っています

于 2013-03-05T14:47:43.450 に答える