【问题标题】:PHP IF statement check for radio button inside jQueryPHP IF 语句检查 jQuery 中的单选按钮
【发布时间】:2016-05-20 21:02:25
【问题描述】:

当我单击添加按钮时,我正在使用下面的代码在 html 中添加一个添加按钮,以便向页面添加一个新的文本框和单选按钮。添加的文本框的名称是输入名称加上添加的数字(点击次数),以便在我想将输入数据用于不同的查询时将其区分为不同的变量。我将此输入(输入为数字)与单选按钮一起使用,以确定是否应该根据选中的单选按钮查询高于或低于指定数字的某个数据。

<input id="btnAdd" type="button" value="Add" />
<br />
<div id="TextBoxContainer">
</div>
<br />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        var click_number = 0;
        $("#btnAdd").bind("click", function () {
            var input = $("<label>input &nbsp;<textarea rows='1' name='input_"+ click_number +"'><?php echo $_POST['input_"+ click_number +"']; ?></textarea></label>&nbsp;");
            var above_below = $("<input type='radio' name='abovebelow_"+ click_number +"' id='above_"+ click_number +"' value='Above' <?php if(isset($_POST['abovebelow_"+ click_number +"']) && $_POST['abovebelow_"+ click_number +"'] == 'Above') echo \"checked='checked'\"; ?>><label for='above_"+ click_number +"'>Above</label><input type='radio' name='abovebelow_"+ click_number +"' id='below_"+ click_number +"' value='Below' <?php if(isset($_POST['abovebelow_"+ click_number +"']) && $_POST['abovebelow_"+ click_number +"'] == 'Below') echo \"checked='checked'\"; ?>><label for='below_"+ click_number +"'>Below</label><br/>&nbsp;");
            hgcBio.appendTo('#TextBoxContainer');
            above_below.appendTo('#TextBoxContainer');
            click_number++;
});
</script>

目前,在 jQuery 中不使用 html 时,它可以工作,但是在这种 jQuery 格式中,单选按钮不起作用。我已将错误范围缩小到上面/下面变量中的 php 代码:

<?php if(isset($_POST['abovebelow_"+ click_number +"']) && $_POST['abovebelow_"+ click_number +"'] == 'Above') echo \"checked='checked'\"; ?>

因为当我删除这部分时,我不再收到错误消息。错误消息是“Parse error: parse error, expecting `"identifier (T_STRING)"'” 在该行。由于我在 jQuery 的其他部分(输入变量)中使用了 php,我猜问题是 if 语句?还有另一种方法可以在这里使用 if 语句吗?或者可能有其他方法来做到这一点?

【问题讨论】:

  • if 语句中的某些字符串似乎格式不正确。 click_number 应该是一个 php 变量吗?为什么 echo 后的第一个字符是反斜杠?
  • 不是 jQuery 变量。反斜杠是为了转义引号。我也可以在那里使用单引号,但这更多是出于可见性原因。
  • 如果您想使用来自 PHP 的数据填充 Javascript,请查看 jquery 的 $.ajax() 方法以及 PHP 端的 json_encode()。我不特别推荐这种方式,因为它可能会在以后导致很多问题。
  • 你不能用+连接字符串和变量在PHP中登录。使用点 . 而不是加号

标签: php jquery html


【解决方案1】:

是不是就这么简单

<?php 
    if(isset($_POST['abovebelow_". click_number ."']) 
         && $_POST['abovebelow_". click_number ."'] == 'Above') 
        echo "\"checked='checked'\""; 
?>

(即您在打印字符串之前和之后忘记了双引号。此外,字符串的连接应该在 php 中使用 . 而不是 +,如 cmets 中所述)

【讨论】:

  • 我相信这会修复错误,但请注意在 POST 括号内的东西有点奇怪。点不连接任何东西,因为它都在单引号内,即使不是,php中的变量也以$开头。我认为这里有些混淆,但是,正如我所说,问题中提到的错误应该通过您的更改来修复。
  • 是的,我忘记了 .连接字符串,但双引号不正确。这与引号中的整个语句不匹配(转义的双引号已经存在以覆盖回显字符串)。 --> 通过尝试确认它并没有引用整个声明的大部分内容。
  • edit:我明白我误解了你所说的,是的,我忘记了转义引号必须在未转义的引号内。我在想你的意思是添加另一组引号,因此它为什么不起作用。谢谢!
猜你喜欢
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 2012-11-21
  • 2016-08-04
  • 2011-04-24
  • 2016-08-17
相关资源
最近更新 更多