2016-04-18 10 views
0

Ich arbeite, um Features zu einigen Beispielcode hinzufügen und habe einige Schwierigkeiten. Der ursprüngliche Code ist ein Alarm und ich füge die Option hinzu, eine Nachricht einzufügen. Hier sind die relativen Schnipsel. Der vollständige Code ist hier http://codepen.io/stmoule/pen/WwJymN.Javascript, um String-Eingabe auf .each auszuschließen

Relative HTML

<div class="overlay"> 
    <div id="alarm-dialog"> 
    <h2>Set alarm after</h2> 
    <label class="hours"> 
       Hours 
       <input type="number" id="inputTimeValue" value="0" min="0" /> 
      </label> 
    <label class="minutes"> 
       Minutes 
       <input type="number" id="inputTimeValue" value="0" min="0" /> 
      </label> 
    <label class="seconds"> 
       Seconds 
       <input type="number" id="inputTimeValue" value="0" min="0" /> 
      </label> 

<!--  Begin where I added --> 
    <div class="messageBox"> 
     <label class="message"> 
        Message 
        <input type="text" name="message" placeholder="Include a message?" /> 
       </label> 
    </div> 
<!--  End of my addition --> 
    <div class="button-holder"> 
     <a id="alarm-set" class="button blue">Set</a> 
     <a id="alarm-clear" class="button red">Clear</a> 
    </div> 
    <a class="close">X</a> 
    </div> 
</div> 

Relative Javascript

alarm_set.click(function() { 

    var valid = true, 
     after = 0, 
     to_seconds = [3600, 60, 1]; 

    dialog.find('input').each(function(i) { 

     // Using the validity property in HTML5-enabled browsers: 

     if (this.validity && !this.validity.valid) { 

     // The input field contains something other than a digit, 
     // or a number less than the min value 

     valid = false; 
     this.focus(); 

     return false; 
     } 

     after += to_seconds[i] * parseInt(parseInt(this.value)); 

    }); 

    if (!valid) { 
     alert('Please enter a valid number!'); 
     return; 
    } 

    if (after < 1) { 
     alert('Please choose a time in the future!'); 
     return; 
    } 

    alarm_counter = after; 
    dialog.trigger('hide'); 
    }); 

Was ich glaube, geschieht das JS alle Eingänge zu finden, das war toll, bis ich die Texteingabe hinzugefügt. Ich versuchte, eine for-Schleife hinzuzufügen, die es auf die ersten drei begrenzt, versuchte, '& & isNaN' zu der if-Anweisung in der JS hinzuzufügen, versuchte ID/Namen der dialog.find ('Eingabe'). Während ich das gegoogelt habe und hier ausgiebig gesucht habe, habe ich das Gefühl, dass ich mental die Lösung gefunden habe, aber Probleme damit habe, es richtig anzuwenden.

Antwort

0

Anstatt zu versuchen, Ihre .each von nichts zu Texteingaben zu stoppen, versuchen Sie, sie überhaupt nicht mit dem jQuery: not() - Selektor auszuwählen. Anstatt

$('input').each() 

sagen, könnte man sagen,

$('input:not(:text)'); 

https://api.jquery.com/not-selector/

+0

Changed dialog.find ('Input'), die jede (function (i) {....}). zu $ (dialog.find ('eingabe: nicht (: text)'). je (funktion (i) {....})); und es hat sehr gut funktioniert. Danke, Caleb. –

+0

Großartig! =] Ich bin froh, dass es funktioniert hat. –

Verwandte Themen