将函数中的值传递给javascript中的表单属性

时间:2013-09-06 15:55:53

标签: javascript forms

如果值是数字,则获得一个函数检查的表单字段。返回检查后,我需要另一个用于将属性值传递给字段的函数。

示例:

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

希望能得到一些帮助。

2 个答案:

答案 0 :(得分: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;

     }

}

答案 1 :(得分: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