0

如果值是否为数字,则得到一个由函数检查的表单字段。返回支票后,我需要另一个函数,该函数旨在将属性值传递给字段。

例子:

  • FunctionA 检查值是否为数字
  • FunctionB 从 FunctionA 获取特定数字,该数字设置为表单字段的属性
  • 如果表单字段值为数字,则将 maxlength 设置为 20
  • 否则,如果它不是数字,则将 maxlength 设置为 10

HTML:

<form method="post"  action="">

<input type="text" name="txt" onblur="numChk(this.value);" maxlength="getMax();" />

<p id="fmsg"></p>

<input type="submit" name="sub" />

</form>

Javascript:

<script type="text/javascript">
function numChk (num){
 //var num = num;
    if(!isNaN(num)){
          document.getElementById("fmsg").innerHTML = '<strong>' + num + ' is a number </strong>';
          getMax(maxVal) = 14;
    } else{
          document.getElementById("fmsg").innerHTML = '<em>' + num + ' is not a number </em>';
          getMax(maxVal) = 11;
    }

}

function getMax(maxVal){
    return maxVal;
}
</script>

希望能在这方面得到一些帮助。

4

2 回答 2

0

我会尝试这样做...

只需在不带参数的 HTML 中调用该函数并添加一个 ID:

<input type="text" name="txt" id="txt" onblur="numChk();" maxlength="getMax();" />

然后在您的函数中,获取输入字段的值:

function numChk (){
     //var num = num;
     var num = parseInt(document.getElementById("txt").value); //Get input field value

     if(!isNaN(num)){
         document.getElementById("fmsg").innerHTML = '<strong>' + num + ' is a number </strong>';
         getMax(maxVal) = 14;
     }else{
         document.getElementById("fmsg").innerHTML = '<em>' + num + ' is not a number </em>';
         getMax(maxVal) = 11;

     }

}
于 2013-09-06T16:03:40.623 回答
0

演示:http: //jsfiddle.net/Q7A32/

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

var inp = document.getElementById('myinput'),
    output = document.getElementById("fmsg");

inp.onkeyup = function() {
    var val = this.value;
    if(isNumber(val)){
        output.innerHTML = '<strong>' + val + ' is a number </strong>';
        this.maxLength = 14;
    }else{
        output.innerHTML = '<em>' + val + ' is not a number </em>';
        this.maxLength = 11;
    }
};

注意:要检查字符串是否为数字,我使用https://stackoverflow.com/a/1830844/1529630

于 2013-09-06T16:08:46.360 回答