2017-05-30 21 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