【发布时间】:2021-12-10 07:35:56
【问题描述】:
我有多个输入字段,我想在所有输入字段上应用 onkeyup 事件,并将文本框的 ID 作为参数传递。我想要多个 keyup 事件,因为我想根据输入 ID 处理一些计算。我试过但失败了。请提出一些解决方案。
function GetDynamicTextBox(value) {
return "<td>"
+"<select class='js-example-placeholder-single js-states form-control loadcompany' id='lcompanyselect' onchange='getDriverAndTruck()';></select>"
+"<input type='button' value='+' class='qty-plus' data-toggle='modal' data-target='#edit_co'></td>"
+"<td><select class='js-example-placeholder-single js-states form-control' id='ldriverselect'></select>"
+"<input type='button' value='+' class='qty-plus' data-toggle='modal' data-target='#edit_driver'></td>"
+"<td class=''><select class='js-example-placeholder-single js-states form-control' id='ltruckselect'></select>"
+"<input type='button' value='+' class='qty-plus' data-toggle='modal' data-target='#edit_truck'></td>"
+"<td><input name='tripnumber' type='text' class='form-control' id='ltripnumber'/></td>"
+"<td><select id='lsubtrip' name='subtrip' class='js-example-placeholder-single js-states form-control'>"
+"<option disabled selected></option><option value='1'>1</option><option value='2'>2</option>"
+"<option value='3'>3</option></select>"
+"<td><input name='date' type='date' class='form-control' id='ldate'/></td>"
+"<td><input name='pickupcity' type='text' class='form-control' id='lpickupcity'/></td>"
+"<td><input name='pickupstate' type='text' class='form-control' id='lpickupstate'/></td>"
+"<td><input name='deliverydate' type='date' class='form-control' id='ldeliverydate'/></td>"
+"<td><input name='delivercity' type='text' class='form-control' id='ldelivercity'/></td>"
+"<td><input name='deliverstate' type='text' class='form-control' id='ldeliverstate'/></td>"
+"<td><input name='loadnumber' type='text' class='form-control' id='lloadnumber'/></td>"
+"<td><input name='loadrate' type='text' class='form-control' id='lloadrate' onkeyup='countload();'/>"
+"<span id='lerrormessage'></span></td>"
+"<td><input name='dispatchfee' type='text' class='form-control' id='ldispatchfee' readonly/></td>"
+'<td><input name="fuel" type="text" class="form-control count" id="lfuel" onkeyup=\"lcount('"+lfuel+"');\"/></td>'
+"<td><input name='cardfee' type='text' class='form-control count' id='lcardfee' onkeyup='lcount('lcardfee');'/></td>"
+"<td><input name='onloadrepair' type='text' class='form-control count' id='lonloadrepair' onkeyup='lcount('lonloadrepair');'/></td>"
+"<td><input name='shoprepair' type='text' class='form-control count' id='lshoprepair' onkeyup='lcount('lshoprepair');'/></td>"
+"<td><input name='trailerrent' type='text' class='form-control count' id='ltrailerrent' onkeyup='lcount('ltrailerrent');'/></td>"
+"<td><input name='comcheck' type='text' class='form-control count' id='lcomcheck' onkeyup='lcount('lcomcheck');'/></td>"
+"<td><input name='advance' type='text' class='form-control count' id='ladvance' onkeyup='lcount('ladvance');'/></td>"
+"<td><input name='miscellenous' type='text' class='form-control count' id='lmiscellenous' onkeyup='lcount('lmiscellenous');'/></td>"
+"<td><input name='misc1' type='text' class='form-control count' id='lmisc1' onkeyup='lcount('lmisc1');'/></td>"
+"<td><input name='misc2' type='text' class='form-control count' id='lmisc2' onkeyup='lcount('lmisc2');'/></td>"
+"<td><input name='misc3' type='text' class='form-control count' id='lmisc3' onkeyup='lcount('lmisc3');'/></td>"
+"<td><input name='misc4' type='text' class='form-control count' id='lmisc4' onkeyup='lcount('lmisc4');'/></td>"
+"<td><input name='total' type='text' class='form-control' id='ltotal' readonly/></td>"
+"<td><input name='layover' type='text' class='form-control count' id='llayover' onkeyup='lcount('llayover');'/></td>"
+"<td><input name='addtl1' type='text' class='form-control count' id='laddtl1' onkeyup='lcount('laddtl1')'/></td>"
+"<td><input name='addtl2' type='text' class='form-control count' id='laddtl2' onkeyup='lcount('laddtl2');'/></td>"
+"<td><input name='addtl3' type='text' class='form-control count' id='laddtl3' onkeyup='lcount('laddtl3');'/></td>"
+"<td><input name='subtotal' type='text' class='form-control' id='lsubtotal' readonly/></td>"
+"<td><input name='paymentmode' type='text' class='form-control' id='lpaymentmode'/></td>"
+"<td><input name='pay' type='text' class='form-control' id='lpay' onkeyup='countleftpay();'/></td>"
+"<td><input name='notes' type='text' class='form-control' id='lnotes'/></td>"
+"<td><input name='grandtotal' type='text' class='form-control' id='lgrandtotal' readonly/></td>"
+"<td><button type='button' class='btn btn-outline-info text-info' onclick='savetriplist();'>Submit</button>"
}
【问题讨论】:
-
您尝试过什么,为什么会失败?您是否尝试过使用 JQuery,这应该使它成为一个非常简单的单行代码解决方案?您是否尝试过使用类似以下内容的纯 JavaScript:
const inputElements = document.querySelectorAll('input'),然后遍历每个输入元素? -
@KyleNakamura 我只想知道如何在 onkeyup="count();" 中将输入 id 作为参数传递。假设我有 所以我想将 id="lfuel" 作为参数传递给 count() 函数。
-
你可以传入
this.id,例如<input id="Ifuel" onkeyup="count(this.id)">。虽然你可能应该避免使用内联 JS,除非它是 React、Angular、Lit 等。 -
为什么 OP 选择删除这个 Q....How to use addEventListener on multiple input fields to invoke keyup event on them in JavaScript?...4 小时前只是为了打开另一个主题和标题完全相同的 Q.(这个)?
-
Q. 明确要求使用
addEventListener,我想这是为了替换每个文本输入元素的内联脚本。因此,昨天提供的答案和使用事件委托的代码示例完美地解决了 OP 的问题。为什么对于仍未解决的问题,OP 没有继续回答试图帮助 OP 的人们提出的问题,为什么 OP 没有继续寻求进一步的支持?
标签: javascript dom-events addeventlistener keyup event-delegation