2016-05-13 26 views
0

Ich möchte einen Js-Code erstellen, also in einem Eingabefeld (für den HTML-Code unten) kann ich nur Zahlen von 0 bis 12 setzen. Aber das Problem ist, dass die Eingabe bereits eine ID hat, also ... Das ist mein Code: HTML:Eingabefeld, um nur Zahlen von 0 bis 12 zu akzeptieren?

<!-- 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:

// 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); 

Dank für das mir helfen, den Code zu schaffen und es in HTML ...

+1

Warum ist die Tatsache, dass es bereits eine ID ein Problem ist? Außerdem sollten Sie in Betracht ziehen, statt einzelner Buchstaben sinnvolle IDs zu geben. – litelite

+0

Können Sie mir also mit dem Code helfen? Der Code ist für die Eingabezeile. Es hat bereits eine ID "d" und wenn ich einen Js Code erstelle, wird es eine andere ID haben! Hast du eine Idee ? –

+0

Gibt es einen bestimmten Grund, dass Sie ein Texteingabefeld verwenden, wenn es so klingt, als wollten Sie nur, dass Benutzer Zahlen eingeben? Wenn Sie das type-Attribut des Inputs auf "number" setzen, können Sie die Attribute "min" und "max" verwenden, um die im Feld zulässigen Mindest- und Höchstwerte zu steuern. Beispiel: https://jsfiddle.net/GigabyteGiant/k3766k66/ –

Antwort

2

Verwenden sie die "min" und "max" setzen Attribute für das Eingabe-Tag.

Für Ihre „e“ Eingabefeld, würde dies wie folgt aussehen:

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

More info

+0

Danke für Ihre Antwort! Es war für "d" und es ist

Verwandte Themen