【问题标题】:jquery .append() not working for my htmljquery .append() 不适用于我的 html
【发布时间】:2021-11-13 20:01:21
【问题描述】:

我有一个程序,它使用 jquery 将输入(type="hidden")附加到 html,以便当我单击提交按钮时,它将值传递给 php 文件,我可以处理它。但是,似乎隐藏类型并没有真正附加到 html 中,也没有传递到 php 文件中。我已经使用method="get" 查看地址栏中的值,使用print_r 查看捕获的值,但什么也没有。为了检查我的表单是否真的在传递一个值,我添加了一个

<input type="hidden" name="absent[]" value="testing" />

在 HTML 中,值通过了,但在 jquery 中没有。

这是我的文件: jQuery:

$(function(){
  $("td").click(function(){
 if($(this).hasClass("on"))
 {
    alert("Already marked absent");

 }
else
{

    $(this).addClass("on");
    var currentCellText = $(this).text();
    var temp = $(this).attr('id');
    $("#collect").append("<input type='hidden' name='absent[]' value = '" + temp + "'/>" + currentCellText);
    alert(temp);

 }
  });

$("#clicky").click(function(){
    $("td").removeClass("on");
    $("#collect").text('');
    $("#collect").append("Absentees: <br>")
    alert(temp);
});
});

这里是html部分:

<?php
session_start();
include 'connectdb.php';
$classID = $_SESSION['csID'];

$classQry = "SELECT e.csID, c.subjCode, c.section, b.subj_name, e.studentID, CONCAT(s.lname, ', ' , s.fname)name
FROM ENROLLMENT e, CLASS_SCHEDULE c, STUDENT s, SUBJECT b
WHERE e.csID = c.csID
AND c.csID = '" . $classID . "'
AND c.subjCode = b.subjCode
AND e.studentID = s.studentID
ORDER BY e.sort;";

$doClassQry = mysql_query($classQry);

echo "<table id='tableone'>";
    while($x = mysql_fetch_array($doClassQry))
    {
        $subject = $x['subj_name'];
        $subjCode = $x['subjCode'];
        $section = $x['section'];
        $studentArr[] = $x['name'];
        $studentID[] = $x['studentID'];


    }
    echo "<thead>";
    echo "<tr><th colspan = 7>" . "This is your class: " . $subjCode . " " . $section . " : " . $subject . "</th></tr>";
    echo "</thead>";
    echo "<tbody>";
    echo "<tr>";        
    for($i = 0; $i < mysql_num_rows($doClassQry); $i++)
    {
        if($i % 7 == 0)
        {               
            echo "</tr><tr><td id = '". $studentID[$i] . " '>" . $studentArr[$i] . "</td>";             
        }
        else
        {
            echo "<td id = '". $studentID[$i] . " '>" . $studentArr[$i] . "</td>";
        }

    }
    echo "</tr>";       
    echo "</tbody>";
echo "</table>";
?>

这是带有表单的 html 部分:

<form name="save" action="saveTest.php" method="post">
<div id="submitt">
    <input type="hidden" name="absent[]" value="testing"/>
    <input type="submit" value="submit"/>
</div>
</form>

这是处理表单的 php 部分(saveTest.php):

<?php

$absent  = $_POST['absent'];
//echo "absnt" . $absent[] . "<br>";
echo count($absent) . "<br>";
//print_r($_POST) . "<br>";
?>

【问题讨论】:

    标签: php jquery html


    【解决方案1】:

    id 为collect 的元素是否在表单内?必须如此。

    $("<input type='hidden' name='absent[]' />").val(temp)
                                                .appendTo('form[name="save"]');
    $('#collect').append(currentCellText);
    

    【讨论】:

    • 哇,我完全错过了。 id collect 不在表单内。哇塞!真的么!我已经为此工作了几个小时。非常感谢您指出这一点。对不起,新手 jquery 用户在这里 :)))))
    • 是的,我使用了一个隐藏元素,因为该元素只有在我单击 时才会被附加。这样,我将那些隐藏元素的 id 推送到我将在 php 文件中处理的数组中。除了使用表单技术之外,我不知道将数组传递给 php 的其他方法。
    • @user1056998 我明白了,添加更多也应该没问题。我会更新的。
    • 感谢更新,现在更清楚了。顺便说一句,我是否有另一种方法可以将隐藏元素的 id 放入 jquery 数组中,以便在单击提交按钮后将其提交到表单?我只是好奇是否有其他方法可以让我学习新技术。在此先感谢:))
    • 我想您可以将其保存在 javascript 变量中,然后在通过 AJAX 发布时对其进行序列化。这种方式也同样有效。
    【解决方案2】:

    这很好用。

    $("body").delegate("#editorjs_menu_list ul li a", "click", function(e){
       e.preventDefault();
       $(this).toggleClass("active");
    });
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签