Php 使用Jquery显示不同输入的唯一id/类增量
我有一个表单,它目前作为一个单行工作,允许基于生产下拉列表的不同输入字段 i、 e.如果您选择CPE或CPM,您将获得印象和目标的输入。如果你选择Eggs2Go,那么你只会得到印象 虽然到目前为止这仍然有效,但如果我添加一行并使用下拉菜单,它会影响第一个ID标记更改该行,而不会影响新行选项Php 使用Jquery显示不同输入的唯一id/类增量,php,jquery,html,Php,Jquery,Html,我有一个表单,它目前作为一个单行工作,允许基于生产下拉列表的不同输入字段 i、 e.如果您选择CPE或CPM,您将获得印象和目标的输入。如果你选择Eggs2Go,那么你只会得到印象 虽然到目前为止这仍然有效,但如果我添加一行并使用下拉菜单,它会影响第一个ID标记更改该行,而不会影响新行选项 function showTargetCheck(that) { if (that.value == "CPM" || that.value == "CPE" || that.value ==
function showTargetCheck(that) {
if (that.value == "CPM" || that.value == "CPE" || that.value == "SWIFT") {
document.getElementById("showTarget").style.display = "block";
document.getElementById("showImpressions").style.display = "none";
}
else if (that.value == "EGGS") {
document.getElementById("showImpressions").style.display = "block";
document.getElementById("showTarget").style.display = "none";
}
else {
document.getElementById("showTarget").style.display = "none";
document.getElementById("showImpressions").style.display = "none";
}
}
是否有一种方法可以自动增加每条新线,以便showTarget和ShowImpressions单独运行
中的详细信息您不能在页面中重复ID,它们必须根据定义是唯一的 重复这样的行的常用方法是为类似的元素使用公共类,并通过查找父行元素,然后在该特定行中查找所需的元素来隔离事件处理程序中的实例 假设我们将所有重复ID更改为相同的类名,然后在jQuery中执行如下操作
$('#tableContainer').on('change', 'select', function(e){
// get row instance starting from `this`
var $row = $(this).closest('.tableRow'),
currVal = $(this).val(),
// flags for toggling various classes
showImpressions = false,
showTarget = false;
if (currVal == "CPM" || currVal == "CPE" || currVal == "SWIFT") {
showTarget = true;
}
// other conditionals to set flags based on other values
// now toggle display of instances of classes within row instance
$row.find('.showTarget').toggle(showTarget);
$row.find('.showImpressions').toggle(showImpressions);
});
正如charlietfl所提到的,ID是唯一的。 使用现有的编码格式
/*
新IO线
*/
$('#addNewIOLine')。单击(函数(){
$('#IOLine')。追加(
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
“选择一个”+
'---' +
“生产”+
“CPE”+
“CPM”+
“斯威夫特”+
“蛋卷”+
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'');
});代码>
#表格容器{
显示:表格;
}
tableRow先生{
显示:表格行;
}
.左表,
.对,
.tableMiddle{
显示:表格单元格;
}
函数showTargetCheck(即){
如果(that.value==“CPM”| that.value==“CPE”| that.value==“SWIFT”){
.parentNode.parentNode.getElementsByClassName(“showTarget”)[0].style.display=“block”;
.parentNode.parentNode.getElementsByClassName(“showImpressions”)[0].style.display=“无”;
}else if(that.value==“鸡蛋”){
.parentNode.parentNode.getElementsByClassName(“showImpressions”)[0].style.display=“block”;
.parentNode.parentNode.getElementsByClassName(“showTarget”)[0].style.display=“无”;
}否则{
.parentNode.parentNode.getElementsByClassName(“showTarget”)[0].style.display=“无”;
.parentNode.parentNode.getElementsByClassName(“showImpressions”)[0].style.display=“无”;
}
}
开始
终点
产品
选择一个
---
生产
氯化聚乙烯
CPM
敏捷的
鸡蛋
印象
瞄准
印象
比率
粗俗的
网
笔记
+添加新行
(代表OP发布)
如果有人需要参考,请在此输入工作版本:
/*
Toggle Impressions and Targeting Fields
*/
$('#tableContainer').on('change', 'select', function(e) {
// get row instance starting from `this`
var $row = $(this).closest('.tableRow'),
currVal = $(this).val(),
showImpressions = true,
showTarget = true,
showDefault = true;
if (currVal == "CPM" || currVal == "CPE" || currVal == "SWIFT") {
showTarget = true;
showImpressions = false;
showDefault = false;
} else if (currVal == "EGGS") {
showImpressions = true;
showTarget = false;
showDefault = false;
} else if (currVal == "DEFAULT" || currVal == "") {
showDefault = true;
showTarget = false;
showImpressions = false;
}
// other conditionals to set flags
// now toggle instances of classes within row
$row.find('.showTarget').toggle(showTarget);
$row.find('.showImpressions').toggle(showImpressions);
$row.find('.showDefault').toggle(showDefault);
});
/*
New IO Line
*/
$('#addNewIOLine').click(function() {
$('#IOLine').append(
'<div class="tableRow">' +
/* DATES */
'<div class="tableLeft">' +
'<input type="date" name="startDate" placeholder="MM/DD/YYYY" class="date">' +
'</div>' +
'<div class="tableMiddle">' +
'<input type="date" name="endDate" placeholder="MM/DD/YYYY" class="date">' +
'</div>' +
/* PRODUCTS */
'<div class="tableMiddle">' +
'<select name="products">' +
'<option value="DEFAULT">Production</option>' +
'<option value="CPE">CPE</option>' +
'<option value="CPM">CPM</option>' +
'<option value="SWIFT">Swift</option>' +
'<option value="EGGS">Eggs2Go</option>' +
'</select>' +
'</div>' +
/* Show Default */
'<div class="showDefault">' +
'<div class="tableMiddle">' +
'<input type="text" placeholder="N/A" disabled>' +
'</div>' +
'<div class="tableMiddle">' +
'<input type="number" placeholder="N/A" class="imps" disabled>' +
'</div>' +
'</div>' +
/* Show Impressions Only */
'<div class="showImpressions">' +
'<div class="tableMiddle">' +
'<input type="text" placeholder="N/A" disabled>' +
'</div>' +
'<div class="tableMiddle">' +
'<input type="number" placeholder="1000" class="imps">' +
'</div>' +
'</div>' +
/* Show Targeting & Impressions */
'<div class="showTarget">' +
'<div class="tableMiddle">' +
'<input type="text" placeholder="Targeting">' +
'</div>' +
'<div class="tableMiddle">' +
'<input type="number" placeholder="1000" class="imps">' +
'</div>' +
'</div>' +
/* RATES */
'<div class="tableMiddle">' +
'<span class="input-symbol-dollar">' +
'<input type="number" placeholder="0.00" min="0.01" class="rates">' +
'</span>' +
'</div>' +
/* GROSS COST */
'<div class="tableMiddle">' +
'<span class="input-symbol-dollar">' +
'<input type="number" placeholder="0.00" min="0.01" class="grosscost">' +
'</span>' +
'</div>' +
/* NET COST */
'<div class="tableMiddle">' +
'<span class="input-symbol-dollar">' +
'<input type="number" placeholder="0.00" min="0.01" class="netcost">' +
'</span>' +
'</div>' +
/* NOTES */
'<div class="tableRight">' +
'<input type="text" placeholder="Notes" class="notes">' +
'</div>' +
'</div>');
});
/*
切换印象和目标字段
*/
$('#tableContainer')。关于('change','select',函数(e){
//从“this”开始获取行实例
var$row=$(this).closest('.tableRow'),
currVal=$(this.val(),
showImpressions=true,
showTarget=true,
showDefault=true;
如果(currVal==“CPM”| | currVal==“CPE”| | currVal==“SWIFT”){
showTarget=true;
showImpressions=false;
showDefault=false;
}否则如果(currVal==“鸡蛋”){
showImpressions=true;
showTarget=false;
showDefault=false;
}else if(currVal==“默认值”| | currVal==“”){
showDefault=true;
showTarget=false;
showImpressions=false;
}
//设置标志的其他条件
//现在切换行中类的实例
$row.find('.showTarget').toggle(showTarget);
$row.find('.showImpressions')。切换(showImpressions);
$row.find('.showDefault').toggle(showDefault);
});
/*
新IO线
*/
$('#addNewIOLine')。单击(函数(){
$('#IOLine')。追加(
'' +
/*日期*/
'' +
'' +
'' +
'' +
'' +
'' +
/*产品*/
'' +
'' +
“生产”+
“CPE”+
“CPM”+
“斯威夫特”+
“蛋卷”+
'' +
'' +
/*显示默认值*/
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
/*只显示印象*/
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
/*展示目标和印象*/
'' +
'' +
'' +
'' +
'' +
'' +
'' +
'' +
/*费率*/
'' +
'' +
'' +
'' +
'' +
/*总成本*/
'' +
'' +
'' +
'' +
'' +
/*净成本*/
'' +
'' +
'' +
'' +
'' +
/*注释*/
'' +
'' +
'' +
'');
});
.jQuery和内联代码以及本机方法的可怕混合。坚持这样或那样,并且始终如一地说,如果你第一次没有时间做正确的事情……为什么你会有时间再做一遍呢?非常好-谢谢你。我知道我把事情搞砸了。我试图在id旁边添加增量值,使它们都是唯一的,并且应该一直在上课。感谢你的帮助。谢谢你在这方面的帮助