Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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 根据onclick/onchange函数保存表单值_Javascript_Php_Html_Forms - Fatal编程技术网

Javascript 根据onclick/onchange函数保存表单值

Javascript 根据onclick/onchange函数保存表单值,javascript,php,html,forms,Javascript,Php,Html,Forms,我有一个表单,在使用php提交时保存用户输入的值。 有些字段位于显示的div中:隐藏,直到onclick或onchange函数将该div更改为显示 提交表单后,如何仅显示包含保存值字段的div?我已将值保存在“始终可见”字段中,但无法触发其函数 我很少使用jquery,因为我对语法不熟悉,更愿意实现我能够理解和适应的解决方案。如果简单jquery是更好/更快/更容易的解决方案,那么它是可以接受的 谢谢 代码示例: <input type="radio" id="customer" name

我有一个表单,在使用php提交时保存用户输入的值。 有些字段位于显示的div中:隐藏,直到onclick或onchange函数将该div更改为显示

提交表单后,如何仅显示包含保存值字段的div?我已将值保存在“始终可见”字段中,但无法触发其函数

我很少使用jquery,因为我对语法不熟悉,更愿意实现我能够理解和适应的解决方案。如果简单jquery是更好/更快/更容易的解决方案,那么它是可以接受的

谢谢

代码示例:

<input type="radio" id="customer" name="jobtype" value="customer" onclick="getJobType()" autofocus>Customer
<input type="radio" id="store" name="jobtype" value="store" onclick="getJobType()">Store
<span id="customerjobs" style="display:none">
    <select id="customer" name="customer" onchange="createJobsList(this.value)">
    *various options*
    </select>

    <span id="jobslist"><br></span>
</span>
第一个span id=customerjobs最初是隐藏的。从收音机中选择后,除相应量程外,所有量程均设置为显示:无,所选量程设置为显示:块。提交时,会保存所选的收音机,但不会调用onclick来显示跨度

第二个span id=jobslist内容由innerHTML填充,在进行选择时使用ajax调用PHP的结果。提交时,会保存所选选项,但不会调用onchange来填充范围

因此,我需要触发保存的单选值的onclick以显示我的内容,并触发保存的select的onchange以填充其他内容

注意:我最初使用onblur和javascript来设置焦点,这样任何操作都会触发内容,但它会在填充表单时造成不必要的停顿,这是我不想要的

页面仅加载一个收音机选择。 用户单击单选按钮。 Onclick函数将span id=customerjobs的样式更改为显示:block。 范围内的“选择”输入现在可见。用户选择一个选项。 Onchange函数进行ajax调用,以从位于span id=jobslist中的服务器请求信息。 用户将表单提交到同一页面。 表单保存输入的值,以便在页面重新加载时仍然选中这些值。 Onclick和onchange函数不会由PHP保存的值触发,因此步骤3和5永远不会发生。页面只剩下单选按钮,除非再次单击。 好的,我有一个JSFIDLE来说明我使用默认选择的问题,因为我不能使用PHP保存输入的值。 假设表单刚刚提交,保存的值是选中的radio按钮customer和下拉列表1中添加单词customer的选择。 理想情况下,整个表单在选定的收音机、选定的选项和添加到最后一个span客户的内容中仍然可见。 相反,只有选定的收音机才可见,除非再次单击以取消隐藏“选择”下拉列表。下拉列表也保留其值,但最后一个跨距中的内容仅在更改时显示


尝试一下,并提前感谢您的建议。

您是否可以将一个函数挂接到onload,该函数检查单选按钮并通过调用getJobtype模拟单击?这将得到初始情况,即单选按钮已经是用户想要的方式。进一步单击将按您的计划工作

编辑添加:如果我理解正确,第一次加载页面时一切都很好,因为用户必须单击某个东西并运行getJobType函数。但是,当重新加载页面时,已选中正确的单选按钮,用户不会更改任何内容,您的函数也不会运行。如果这是正确的,从onload运行getJobType应该可以修复它

您可能需要一些类似的东西,比如PHP会在页面的后续加载中将其设置为false,而onload函数只会在firstrun为false时发生。编辑:您不需要它,因为getJobType没有默认操作;继续读

编辑更多:您已在Customer单选按钮上选中=已选中,因此,如果用户是客户,即使初始运行也不会显示隐藏的材质

Remove checked=页面初始加载时已选中,因此在初始演示文稿中,两个按钮均未选中。*然后添加窗口。onload=getJobType;到JavaScript的末尾

在初始加载时,getJobType将不执行任何操作,因为它检查两个按钮,并且没有默认操作。单击按钮时,getJobType将运行并根据单击的按钮执行操作

随后加载页面时,将选中其中一个按钮,当onload运行getJobType时,它将执行相应的操作

在第二次和后续加载表单时,服务器端PHP保留和反映的单选按钮、选择值和任何其他表单元素都是正确的。当其中一个值同时更改其他内容(例如使隐藏的DIV可见)时,需要使用onload JavaScript函数。如果除getJobType之外还有其他函数操作DOM,那么编写一个init函数将DOM设置为基于表单元素的值pres可能会更简洁 由PHP进程提供服务


*我通常主张在默认情况下检查一些按钮,以便用户可以始终返回初始状态。这个案例似乎是个例外。

您能提供更多信息和/或您首选解决方案的示例以及您现在得到的信息吗?我仍然不清楚您需要实现什么。你能提供你正在做的事情的步骤吗添加了页面最初和提交时的逐步操作方式。我实际上没有实现保存的无线电值,所以我忘了我的代码示例中没有。相反,我使用的是默认选中的第一个收音机,这是我发现的onclick/onchange问题。谢谢你的链接作为参考,amarnath。第8步是我遇到的问题,不是保存的值。谢谢Bob,checked=checked是为了模拟保存的值,通常不在那里,所以这适用于getJobType。但对于createJobsList和createStoreList,所选选项值将传递给函数。如何处理此onload?在示例中,此选项值未使用,但在我的代码中,它用于ajax调用;在JavaScript中,在定义getJobType之后。如果…selected=selected,则选择的值也由PHP保存。我还需要调用它的onchange函数onload来加载其余的内容。堆栈溢出似乎不赞成评论中的扩展讨论,因此我编辑了我的帖子以解决您的问题。