我正在开发一个项目,其中某些表单元素依赖于另一个表单输入以具有特定值,或者可能在显示该输入之前具有特定值的多个元素。
这个想法是,当生成表单时,每个输入的包装div都有一个data-depends-on属性,每个字段都有一个逗号分隔的列表,它依赖于要显示的每个字段,以及每个字段的值。它期望被展示。
我差不多要使用前端/ JavaScript代码来完成提升,但由于某些原因我的JavaScript函数中的jQuery.each()循环没有运行,即使我已经确认了我正在尝试的数组循环通过。有内容,和b。当预期这样做时,实际上正在调用该函数。
首先,我有实际的函数调用(每当更改依赖项输入时调用):
checkShowField(keyed_depends, current_vals, targeted_element);
然后是函数checkShowField()定义:
function checkShowField(keyed_dependencies, current_values, targeted_element)
{
var hide_field = null;
jQuery.each(keyed_dependencies, function(key, value)
{
if (value != current_values[key] && hide_field == null)
hide_field = false;
});
if (hide_field == null)
$(targeted_element).slideDown();
else
$(targeted_element).slideUp();
}
另请注意,函数调用放在适当的位置,实际上正在调用。我刚刚在这里添加了代码,以向大家展示如何调用函数的上下文。函数调用包含在$(document).ready(function(){...}。
中正如你所看到的,在函数“checkShowField”中,我有一个jQuery.each循环应该循环通过keyed_dependencies数组,但实际上,循环甚至没有运行一次。想法?
答案 0 :(得分:0)
看起来keyed_dependencies并不是你认为的那样。尝试在debugger;
行之前添加.each
语句,也可以在函数中添加<form action='filter2.php' method='post' name='value' >
<select name="value">
<option value="project_name">project_name</option>
<option value="stage">stage</option>
<option value="project_details">project_details</option>
</select>
<br />
<input type='submit' value = 'Filter'>
</form>
<?php
// Authentication Variables
$servername = "localhost";
$username = "basic";
$password = "redrobinX123";
$dbname = "basic_forms1";
// Make connection
$con = mysqli_connect($servername, $username, $password, $dbname);
// If error connecting
if (!$con) {
die(mysqli_error("could not connect"));
}
// If post value isset
if(isset($_POST['value'])) {
$column = $_POST['value']; // Set Column
$query = "SELECT ". $column . " FROM photo"; // Create Query
$sql = mysqli_query($con,$query); // Run Query
// Loop through results
while ($row = mysqli_fetch_array ($sql)){
echo "<br>". $row[$column] . "<br>";
}
// Close connection
mysqli_close($con);
}
?>
语句。然后使用检查器/调试器查看变量中的数据。
答案 1 :(得分:0)
您可以检查参数列表中的keyed_dependencies
是否具有属性length
。如果是这样,jQuery假设一个数组,实际上可能无法循环运行。
如果是这种情况,请尝试使用vanilla JS:
for (var key in keyed_dependencies) {...}
希望有所帮助。