2016-05-13 21 views
0

私はjsコードを作成したいので、入力フィールド(下のHTMLコード用)では0から12までの数字しか入れられません。しかし、問題は入力がすでにIDを持っていることです。私のコード: HTML:0〜12の数字のみを受け入れる入力フィールド?

<!-- Months Textfield --> 
     <form> 
      <div class="mdl-textfield mdl-js-textfield"> 
      <input class="mdl-textfield__input" input id="d" data-in="" type="text" pattern="-?[0-9]*(\.[0-9]+)?" id="sample2" onchange="handleChange(this);"> 
      <label class="mdl-textfield__label" for="sample2">Months...</label> 
      <span class="mdl-textfield__error">Please specify monthes in numbers not in letters !</span> 
      <input id="e" input type="hidden" data-in="" value="2628002.88" type="text" /> 
      </div> 
     </form> 

JS:コードを作成する私を助け、HTMLでそれを置くための

// Get all your elements stores 
var a = document.getElementById("a"); 
var b = document.getElementById("b"); 
var c = document.getElementById("c"); 
var d = document.getElementById("d"); 
var e = document.getElementById("e"); 
var f = document.getElementById("f"); 
var h = document.getElementById("h"); 
var i = document.getElementById("i"); 
var j = document.getElementById("j"); 
var astored = a.getAttribute("data-in"); 
var bstored = b.getAttribute("data-in"); 
var dstored = d.getAttribute("data-in"); 
var estored = e.getAttribute("data-in"); 
var hstored = h.getAttribute("data-in"); 
var istored = i.getAttribute("data-in"); 

function calculate(input1, input2, output) { 
    output.innerHTML = input1.value * input2.value; 
} 
function add(input1, input2, input3, output) { 
    output.innerHTML = parseInt(input1.innerHTML) + parseInt(input2.innerHTML) + parseInt(input3.innerHTML); 
} 
setInterval(function(){ 
    var temp; 

    if (a == document.activeElement) { 
     temp = a.value; 
     if (astored != temp){ 
      astored = temp; 
      a.setAttribute("data-in",temp); 
      calculate(a, b, c); 
     } 
    } else if (b == document.activeElement) { 
     temp = b.value; 
     if (bstored != temp) { 
      bstored = temp; 
      b.setAttribute("data-in",temp); 
      calculate(a, b, c); 
     } 
    } else if (d == document.activeElement) { 
     temp = d.value; 
     if (dstored != temp) { 
      dstored = temp; 
      d.setAttribute("data-in",temp); 
      calculate(d, e, f); 
     } 
    } else if (e == document.activeElement) { 
     temp = e.value; 
     if (estored != temp) { 
      estored = temp; 
      e.setAttribute("data-in",temp); 
      calculate(d, e, f); 
     } 
    } else if (h == document.activeElement) { 
     temp = h.value; 
     if (hstored != temp) { 
      hstored = temp; 
      h.setAttribute("data-in",temp); 
      calculate(h, i, j); 
     } 
    } else if (i == document.activeElement) { 
     temp = i.value; 
     if (istored != temp) { 
      istored = temp; 
      i.setAttribute("data-in",temp); 
      calculate(h, i, j); 
     } 
    } 
    add(c, f, j, elem_to_print_into); 
}, 50); 

a.onblur = calculate(a, b, c); 
b.onblur = calculate(a, b, c); 
d.onblur = calculate(d, e, f); 
e.onblur = calculate(d, e, f); 
h.onblur = calculate(h, i, j); 
i.onblur = calculate(h, i, j); 
calculate(a, b, c); 
calculate(d, e, f); 
calculate(h, i, j); 

おかげで...

+1

を?また、単一文字の代わりにいくつか意味のあるIDを付けることを検討することをお勧めします。 – litelite

+0

コードを教えてください。コードは入力行用です。すでにIDが "d"で、jsコードを作成している場合は別のIDを持っています!あなたはなにか考えはありますか ? –

+0

ユーザーが数字だけを入力したいと思ったときに、テキスト入力フィールドを使用している特定の理由はありますか?入力のtype属性を "number"に設定すると、 'min'属性と' max'属性を使用して、フィールドで許される最小値と最大値を制御できます。例:https://jsfiddle.net/GigabyteGiant/k3766k66/ –

答えて

2

使用 "MIN" と "MAX"入力タグの属性。あなたの「E」入力フィールドの

、これはこのようなものになります。それはすでにIDを持っているという事実が問題であるのはなぜ

<input id="e" min="0" max="12" input type="hidden" data-in="" value="2628002.88" type="text" /> 

More info

+0

あなたの答えをありがとう!これは "d"であり、

関連する問題