jquery表单提交,动态ID不起作用

时间:2011-07-08 06:34:26

标签: php javascript jquery jquery-selectors

我无法使用动态ID提交表单。以下是我的代码。

<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript">
var fval;    
var cvalue = "<?php echo $_POST['currentval']; ?>";
if(!(cvalue)) cvalue=0;
$(document).ready(function() {
$('#upload'+cvalue).submit(function() {
    var options = {
        target: '#message', 
        url:'process.php?sval='+cvalue, 
        success:  function() {
        alert("success");
        $('#uploader').html('');

        }
    };
$(this).ajaxSubmit(options);
return false;
});
});
</script>
<div id="message"></div>
<?php
for($i=0;$i<5;$i++) {
    echo "<form action='#' method='post'  name='upload' id='upload$i' enctype='multipart/form-data'>";   
    echo "<input type='hidden' name='svalhid'  id='svalhid' value='$i'>";
    echo "<input type='file' id='fl$i' name='filename".$i."up'>";
    echo "<input type='hidden' name='currentval' id='currentval' value='$i'>";
    echo "<input type='submit' name='uploads$i' value='Ok'><br>";
    echo '</form>';
}
?>

在这一行中,$('#upload'+cvalue).submit(function() {

我无法获得cvalue。我无法确定此代码有什么问题。有人请帮助我。

3 个答案:

答案 0 :(得分:1)

检查以下行

echo "<form action='#' method='post'  name='upload' id='upload$i' enctype='multipart/form-data'>";

您确定为id属性打印出正确的值吗?

我认为它有两种更好的方式:

第一天(我眼中最好的方式):

<?php
for($i=0;$i<5;$i++) {
?>
    <form action='#' method='post'  name='upload' id='upload<?php echo $i ?>' enctype='multipart/form-data'>";   
    <input type='hidden' name='svalhid'  id='svalhid' value='<?php echo $i ?>'>"
    <input type='file' id='fl<?php echo $i ?>' name='filename<?php echo $i ?>up'>";
    <input type='hidden' name='currentval' id='currentval' value='<?php echo$i ?>'>"
    <input type='submit' name='uploads<?php echo $i ?>' value='Ok'><br>"
    </form>'
<?php
}
?>

第二:将提到的行改为以下:

echo "<form action='#' method='post'  name='upload".$i."' id='upload".$i."' enctype='multipart/form-data'>";

注意:您定义了几个具有相同名称的表单。据我所知,属性“name”是表单的主要属性,而不是“id”属性。

答案 1 :(得分:0)

我没有看到除了“”或“0”之外的任何内容。此外,这两个赋值在$(document).ready(function(){之外...因此在文档完全加载之前执行该代码可能会发生奇怪的事情。将它们移入document.ready call并查看内容发生的情况。

答案 2 :(得分:0)

尝试使用

var cvalue = "<?php echo $_GET['currentval']; ?>";

var cvalue = "<?php echo $_REQUEST['currentval']; ?>";

还可以尝试@reporter关于表单ID的说法:id ='upload“。$ i。” 表单ID应与此处引用的表单相同:

$('#upload'+cvalue).submit(function() {

示例:

在javascript中:

$('#upload').submit(function() {

然后表格应该是:

<form id="#upload" ...

你一定会看到一些事情发生。 尝试安装firebug并使用console.log(variablehere)而不是alert(variablehere)。它更清洁。

希望有所帮助