2017-10-21 54 views
-2

获得值从禁用文本字段的Javascript

function pretest() { 
 
     var a = document.getElementById('pre').value; 
 
     var result = parseInt(a); 
 
     if (a <= 50) { 
 
     document.getElementById('val').value = 1; 
 
     }else if(50<a && a<= 80){ 
 
     document.getElementById('val').value = 2; 
 
     }else{ 
 
     document.getElementById('val').value = 3; 
 
     } 
 
} 
 

 
    function posttest(){ 
 
     var a = document.getElementById('post').value; 
 
     var result = parseInt(a); 
 
     if (a <= 50) { 
 
     document.getElementById('val1').value = 1; 
 
     }else if(50<a && a<= 80){ 
 
     document.getElementById('val1').value = 2; 
 
     }else{ 
 
     document.getElementById('val1').value = 3; 
 
     } 
 
    } 
 

 
    function all(){ 
 
     var a = document.getElementById('val').value; 
 
     var b = document.getElementById('val1').value; 
 
     var c = parseInt(a) + parseInt(b); 
 
     if (!isNaN(c)) { 
 
     document.getElementById('total').value = c; 
 
     } 
 

 
    } 
 

 
<input onkeyup="pretest();" type="text" id="pre" name="pretest"> 
 

 
<input onkeyup="all();" type="text" id="val" name="val" disabled="disabled"> 
 

 
<input onkeyup="posttest();" type="text" id="post" name="posttest"> 
 

 
<input onkeyup="all();" type="text" id="val1" name="val1" disabled="disabled"> 
 

 
<input onkeyup="total();" type="text" id="total" name="total" disabled="disabled">

我有5个文本字段

A1 A2(值的onkeyup从A1和残疾人为true) B1 B2(从B1和禁用是值的onkeyup真)

C(A2 + B2和残疾人文本框)

如何获得对C文本字段值?我用的onkeyup,但没有奏效

+0

哪里是你的参考代码? –

+1

通过字段的“.value”属性,您可以完全相同的方式获取文本字段的值,而不管它们是否被禁用。 –

+0

为什么'php'标记在这里?另外OP,你真的需要让你的查询更清晰。也许包括你目前拥有的'html' – DMcCallum83

回答

0

有几件事情在你的代码不对劲。

  • 永远,永远使用没有parseInt(foo)的基数说法,尤其foo是任意的输入。 parseInt将另外输入012,并认为它是您给它的八进制值。因此,使parseInt(a, 10)得到一个小数,或使用Number(a)
  • onkeyup不会触发禁用的元素 - 它怎么可能?没有人能够在那里按一个键,因为它被禁用。你可能想要的是onchange,但是...
  • ... onchange(或oninput,这是一个更多的触发快乐,我在下面使用)不会触发,当你手动设置元素的值;它不在香草JS中,也不在使用jQuery的val() - 你必须手动触发它
  • 你的代码示例是匆忙,不完整,我不得不工作相当长的时间和难以理解你想要什么,应该是必要的;不管...

/* 
 
Especially with function names like `all` and `total`, you will want 
 
to make sure to set up some sort of namespacing, e.g. using the 
 
Revealing Module Pattern or other. These functions are attached to 
 
the global window object and can be overriden by anything and anybody, 
 
causing at least hard-to-trace bugs, maybe worse 
 
*/ 
 

 
function pretest() { 
 
    var a = document.getElementById('pre').value; 
 
    var result = parseInt(a, 10); 
 
    if (a <= 50) { 
 
    document.getElementById('val').value = 1; 
 
    } else if (50 < a && a <= 80) { 
 
    document.getElementById('val').value = 2; 
 
    } else { 
 
    document.getElementById('val').value = 3; 
 
    } 
 

 
    // you have to explicitly call all() here, as the input-event 
 
    // won't be fired when manually setting value 
 
    all(); 
 
} 
 

 
function posttest() { 
 
    var a = document.getElementById('post').value; 
 
    var result = parseInt(a, 10); 
 
    if (a <= 50) { 
 
    document.getElementById('val1').value = 1; 
 
    } else if (50 < a && a <= 80) { 
 
    document.getElementById('val1').value = 2; 
 
    } else { 
 
    document.getElementById('val1').value = 3; 
 
    } 
 

 
    all() 
 
} 
 

 
function all() { 
 
    var a = document.getElementById('val').value; 
 
    var b = document.getElementById('val1').value; 
 
    var c = parseInt(a, 10) + parseInt(b, 10); 
 
    if (!isNaN(c)) { 
 
    document.getElementById('total').value = c; 
 
    } 
 

 
    total(); 
 
} 
 

 
total = function() { 
 
    //TODO implement 
 
} 
 

 
document.getElementById('pre').addEventListener('input', window.pretest); 
 
document.getElementById('post').addEventListener('input', window.posttest);
<label for="pre">PRE</label><br> 
 
<input type="text" id="pre" name="pretest"> 
 
<br><br> 
 
<label for="val">val</label><br> 
 
<input type="text" id="val" name="val" disabled="disabled"> 
 
<br><br> 
 
<label for="post">POST</label><br> 
 
<input type="text" id="post" name="posttest"> 
 
<br><br> 
 
<label for="val1">val1</label><br> 
 
<input type="text" id="val1" name="val1" disabled="disabled"> 
 
<br><br> 
 
<label for="total">TOTAL</label><br> 
 
<input type="text" id="total" name="total" disabled="disabled">

+0

其工作,谢谢@oliver ..对我的问题感到抱歉 – ramen

0

你可以得到的值从正常的文本输入

 
 

 
function myFunction(){ 
 
document.getElementById("textPlace").disabled = true; 
 
console.log(document.getElementById("textPlace").value) 
 

 
}
<input type="text" onkeyup="myFunction()" id="textPlace">

+0

设置该值也只是赋值给'.value'属性。 –

+0

感谢您的评论 –

+0

谢谢,但这不是我的意思 – ramen