Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 附加和分离动态创建的输入_Javascript_Jquery_Html - Fatal编程技术网

Javascript 附加和分离动态创建的输入

Javascript 附加和分离动态创建的输入,javascript,jquery,html,Javascript,Jquery,Html,我有两个单选按钮: 固定价格选项(默认选中) 可变价格选项(默认禁用) 我还有两种类型的输入: 固定价格\u输入(默认可见。仅出现一次。) 变量\u价格\u输入(不在代码中,因为它必须动态添加。一个或多个发生。) 如果选择了fixed_price_选项,则名为fixed_price_input的输入应该是可见的,并在以后运行时包含。serialize() 如果选择了固定价格\u选项,则以后运行时不应显示或包含变量价格\u输入。serialize() 只有当两个日期输入之间的差异超过12个

我有两个单选按钮:

  • 固定价格选项
    默认选中
  • 可变价格选项
    默认禁用
我还有两种类型的输入:

  • 固定价格\u输入
    默认可见。仅出现一次。)
  • 变量\u价格\u输入
    (不在代码中,因为它必须动态添加。一个或多个发生。)
如果选择了
fixed_price_选项
,则名为
fixed_price_input
的输入应该是可见的,并在以后运行时包含。serialize()

如果选择了
固定价格\u选项
,则以后运行时不应显示或包含
变量价格\u输入。serialize()

只有当两个日期输入之间的差异超过12个月时,才可选择变量价格选项。(我已经解决了这个问题)

当选择了
可变价格选项
时,应该有一个
可变价格输入
',因为两个日期输入之间有整整一年(即持续时间月+1)。它们还需要在以后运行.serialize()时包含在内,因此它们需要具有诸如
price\u year\u 1
price\u year\u 2
price\u year\u 3
等名称,具体取决于两个日期输入之间的年份数

如果选择了
可变价格选项
固定价格输入
在以后运行时不应可见或包含。serialize()

我已经提供了我来过的代码。缺少的逻辑需要放在js代码底部的事件处理程序中

对如何解决这个问题有什么建议吗

--更新--

我的问题需要澄清:

我正在努力的是根据选中的单选按钮切换两种输入类型(
固定价格输入
可变价格输入
)的存在。隐藏/显示它们是不够的,因为我稍后将使用.serialize()。我应该使用.detach()和.append()吗

我还在为如何创建一个比开始日期和结束日期之间的年份还要多的
变量\u price\u input
而苦苦挣扎。我应该使用
或.clone()吗

$(文档).ready(函数(){
$(“#inputStartDate,#inputEndDate”).change(函数(){
if($('inputStartDate').val()&&&('inputEndDate').val()){
var startDate=力矩($('#inputStartDate').val();
var endDate=力矩($('#inputeneddate').val();
var durationMonths=endDate.diff(起始日期,“月”);
$(“#durationMonths”).text(durationMonths);
var durationYears=endDate.diff(起始日期,“年”);
$(#durationYears')。文本(durationYears);
如果(持续时间>12){
$('#variablePriceOption').prop(“禁用”,false);
}否则{
$('#variablePriceOption').prop(“禁用”,true);
}
}
});
$('#variablePriceOption,#fixedPriceOption')。更改(函数(){
如果(this.value=='fixedPrice'){
//需要逻辑
}else if(this.value=='variablePrice'){
//需要逻辑
}
});
});

开始日期
结束日期
所选日期之间的月份=。所选日期之间的年份=。
价格模型
固定价格
可变价格
固定价格金额
$

这将有助于您了解日历日期每一年差异的可变定价输入。代码可以分解为其他函数,用于处理元素的显示/隐藏等。您需要将
代码移到其他JS引用之上,以消除在
引导过程中看到的错误

另外,您的
duration
变量应该是
durationMonths
,用于比较>12,因为
duration
未定义的
durationYears
应移到日历日期的
change
功能之外,以便您可以在其他处理功能中引用它。我在日期计算中添加了
Math.abs()

使用隐藏的
输入
上的
禁用
属性将允许您序列化可见的
表单
数据,并确保不会将隐藏的输入(可变定价字段等)作为
序列化
数据的一部分

正如@Twisty在您的帖子评论中提到的,如果您在固定/可变选项之间来回切换(
localStorage
sessionStorage
也包括用于存储数据的选项),您将希望使用
.detach()
或某种方式来存储可变定价输入值,如果要维护变量/固定
输入中的任何值
。如果要存储输入的数据值,还需要删除我的示例中输入字段的
.empty()
用法

用于确定应显示多少可变定价输入的循环函数
handleVariablePricing
需要连接到存储数据功能中,以确保您使用以前输入的值创建相同数量的字段,而不是在现有字段/值的基础上添加额外的新字段

$(文档).ready(函数(){
var durationYears=0;
$(“#inputStartDate,#inputEndDate”).change(函数(){
if($('inputStartDate').val()&&&('inputEndDate').val()){
var startDate=力矩($)(“#inputStartDate”