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

使用 javascripts 正则表达式来检查值。尽管重复一次的模式只是模式,但可能不需要“{1}”。

随意抓住正则表达式部分,因为我已经更改了 check() 函数的机制,因此它被传递到表单字段 ID 并从中识别值。

它确保仅在条件都满足时才提交表单。

编辑:
或者查看列表框以获取一个不错的 jquery 插件来执行此操作(如@Ark 所述)

希望有帮助

于 2013-03-05T14:47:43.450 回答