2017-10-21 51 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