2017-05-30 48 views
0

我想運行此語句20個輸入框。有沒有一種乾淨的方式來結合?似乎會有很多的陳述。設計用於捕獲輸入到輸入中的數據,然後在點擊按鈕後將其顯示在HTML中。目前只有1行代碼有效,需要添加幾行代碼。如何整合多個語句

$(".showreg").click(function(){ 

    var pagetitle = $('#f_k_page_title').val(); 

    if(!pagetitle) 
    {pagetitle = "Oop's No value entered";} 
    $('#theValue').html(pagetitle); 
}); 

$(".showreg").click(function(){ 
    var nametitle = $('#f_name_title').val(); 

    if(!nametitle) 
    {nametitle = "Oop's No value entered";} 
    $('#theValue2').html(nametitle); 

}); 

HTML

<span id="theValue"></span> 
    <span class="txt_111 s17" id="theValue2">Title:</span> 
    <span class="txt_555 s17" id="theValue3"></span> 

<div class="btn blue next-btn r-btn regclick3 capture_button showreg mt10">Next</div> 

FormHTML

<form> 
    <input id="f_k_page_title"/> 
    <input id="f_name_title"/> 

    <input class="btn blue createacc-btn " type="submit" name="submit" value="Create account"/> 
</form> 
+0

你可以發佈你的HTML結構?你可以委託這些事件,但我們需要刪除對'id'選擇器的硬引用,並使用DOM遍歷方法。 – War10ck

回答

1

剛剛成立事件處理程序在需要驗證的所有對象(CSS類幫助這裏):

$(".validateForEmpty").on("blur", function(evt){ 
 

 
var input = $(this); 
 

 
// Get index number of the input within its group. 
 
var idx = $(".validateForEmpty").index(input); 
 
    
 
// Get reference to span corresponding to that same index 
 
var span = $(".output").get(idx); 
 

 
// Validate element that just lost the focus 
 
if(input.val().trim() === ""){ 
 
    $(span).text(input.attr("name") + " Can't be empty!"); // Put message corresponding span 
 
} else { 
 
    $(span).text(input.attr("name") + " contains: " + input.val()); // Put value in corresponding span 
 
} 
 
});
.output { display:block; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <input type="text" name="a" class="validateForEmpty"> 
 
</div> 
 
<div> 
 
    <input type="text" name="b" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="c" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="d" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="e" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="f" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="g" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="h" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 
<div> 
 
    <input type="text" name="i" class="validateForEmpty"><span class="error"></span> 
 
</div> 
 

 
<div class="outputElements"> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
    <span class="output"></span> 
 
</div>

+0

謝謝,它是它的一部分,但要求顯示輸入的數據而不是「不能空的!」如果數據已經輸入。如果不顯示「不能空」 – Dee

+0

@Dee沒問題。我會更新答案。 –

+0

多數民衆贊成它,但需要將其掛鉤到一個ID,所以我可以使用它不直接在輸入框旁邊。這就是爲什麼它開始變得凌亂 – Dee

0

理想?添加一個普通類,你關心的所有input S和A data-valuespan屬性各的,所以我們知道往哪裏放消息,例如

<input id="f_k_page_title" class="validatee" data-valuespan="theValue" /> 
<input id="f_name_title" class="validatee" data-valuespan="theValue2" /> 

然後:

$('.validatee').each(function() { 
    var el = $(this); 
    var val = el.val() || "Oops, no value entered"; 

    $('#' + el.data('valuespan')).text(val); 
}); 

但是,如果你真的不能改變HTML,你需要信任的表單元素的順序。並交代了事實,即所有span小號除了第一有許多...

$(".showreg").click(function(e) { 
 
    var inps = $('form').first().find('input'); 
 

 
    for (var i = 0; i < inps.length; ++i) { 
 
    var inp = inps[i]; 
 

 
    if (inp.type !== "submit") { 
 
     var spanNum = (i > 0) ? (i + 1) : ''; 
 
     var spanName = 'theValue' + spanNum; 
 

 
     var val = inp.value || 'Oops, no value entered'; 
 
     $('#' + spanName).text(val); 
 
    } 
 
    } 
 
});
span { 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<span id="theValue"></span> 
 
<span class="txt_111 s17" id="theValue2">Title:</span> 
 
<span class="txt_555 s17" id="theValue3"></span> 
 

 
<div class="btn blue next-btn r-btn regclick3 capture_button showreg mt10">Next</div> 
 

 

 
<form> 
 
    <input id="f_k_page_title" /> 
 
    <input id="f_name_title" /> 
 
    <input id="f_other" /> 
 

 
    <input class="btn blue createacc-btn " type="submit" name="submit" value="Create account" /> 
 
</form>

+0

由於將有一齣戲,第一跨度可以有一個號碼,如果它有助於縮短代碼 – Dee

+0

在第一個例子中,你將如何引用其他地方的數據值範圍 – Dee