当前位置: 代码迷 >> JavaScript >> 如何将值从一个div面板转移到jquery中的另一个面板?
  详细解决方案

如何将值从一个div面板转移到jquery中的另一个面板?

热度:46   发布时间:2023-06-06 09:35:02.0

在一个表单中,有多个div面板

<form>
<div class="panel1">
  <input type="text" value="" name="bank0" id="bank0">
  <input type="text" value="" name="shank0" id="shank0">
  <input type="text" value="" name="dhank0" id="dhank0">
  <input type="text" value="" name="raank0" id="raank0">
</div>
<hr>
<div class="panel2">
  <input type="text" value="" name="bank1" id="bank1">
  <input type="text" value="" name="shank1" id="shank1">
  <input type="text" value="" name="dhank1" id="dhank1">
  <input type="text" value="" name="raank1" id="raank1">
</div>
</form>

要求 :如果用户将panel1留空,并在panel 2中输入了文本; 那么我们想将所有值从面板2移到面板1; 在最终提交表格时。

在实际用例中,我们有10个这样的面板。 小提琴: :

尝试这个。

 var inputsValue = []; $("button").click(function () { $(".panel2 input").each(function () { inputsValue.push(this.value); }); $(".panel1 input").each(function (i, value) { $(this).val(inputsValue[i]); }); inputsValue = []; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <div class="panel1"> <input type="text" value="" name="bank0" id="bank0"> <input type="text" value="" name="shank0" id="shank0"> <input type="text" value="" name="dhank0" id="dhank0"> <input type="text" value="" name="raank0" id="raank0"> </div> <hr> <div class="panel2"> <input type="text" value="" name="bank1" id="bank1"> <input type="text" value="" name="shank1" id="shank1"> <input type="text" value="" name="dhank1" id="dhank1"> <input type="text" value="" name="raank1" id="raank1"> </div> <hr> <button>Submit</button> 

如果第一个面板留为空白(我从需求中读取的内容),这只会将数据从面板2移动到面板1。

此外,它还会擦除面板2的数据,以防止发布重复的表单数据。 从您的问题来看,我认为这是您的目标?

这是如何在jQuery中实现此功能的方法:

 $("button").click(function(){ var moveData = true, formvalues = []; $(".panel1 input").each(function(e, field){ if( field.value != '' ){ moveData = false; return false; } }); // only move data if first panel is blank if( moveData ){ $(".panel2 input").each(function(){ formvalues.push( this.value ); this.value = ''; }); $(".panel1 input").each(function (i) { this.value = formvalues[i]; }); } }); 
 <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <div class="panel1"> <input type="text" value="" name="bank0" id="bank0"> <input type="text" value="" name="shank0" id="shank0"> <input type="text" value="" name="dhank0" id="dhank0"> <input type="text" value="" name="raank0" id="raank0"> </div> <hr> <div class="panel2"> <input type="text" value="" name="bank1" id="bank1"> <input type="text" value="" name="shank1" id="shank1"> <input type="text" value="" name="dhank1" id="dhank1"> <input type="text" value="" name="raank1" id="raank1"> </div> <hr> <button>Submit</button> 

我还使用香草JS编写了该解决方案,以供您参考(可能有用),因为纯JS的性能更高。

 var submitBtn = document.getElementsByTagName("button")[0]; submitBtn.addEventListener("click", function(){ var moveData = true, formvalues = [], panel1 = document.getElementsByClassName("panel1"), panel1Fields = panel1[0].getElementsByTagName("input"), panel2 = document.getElementsByClassName("panel2"), panel2Fields = panel2[0].getElementsByTagName("input"); for(var i=0; i < panel1Fields.length; i++){ if( panel1Fields[i].value != '' ){ moveData = false; return false; } } // only move data if first panel is blank if( moveData ){ for(var i=0; i < panel2Fields.length; i++){ formvalues.push( panel2Fields[i].value ); panel2Fields[i].value = ''; } for(var i=0; i < panel1Fields.length; i++){ panel1Fields[i].value = formvalues[i]; } } }); 
 <div class="panel1"> <input type="text" value="" name="bank0" id="bank0"> <input type="text" value="" name="shank0" id="shank0"> <input type="text" value="" name="dhank0" id="dhank0"> <input type="text" value="" name="raank0" id="raank0"> </div> <div class="panel2"> <input type="text" value="" name="bank1" id="bank1"> <input type="text" value="" name="shank1" id="shank1"> <input type="text" value="" name="dhank1" id="dhank1"> <input type="text" value="" name="raank1" id="raank1"> </div> <button>Send</button> 

  相关解决方案