【问题标题】:Correct syntax for variable in selector and using php variables with jquery?选择器中变量的正确语法以及在 jquery 中使用 php 变量?
【发布时间】:2019-06-07 07:56:42
【问题描述】:

我似乎无法获得在 for 语句中包含诸如 $("input[name=' + Var +']"). What i'm attempting to do is have a variable set as a php variable and withvar SomeVar = "";then user it in a selector for a changing variable according to$i` 之类的变量的正确语法。

我尝试以各种不同的方式使用引号,我使用$("input[type=text]"."+var+"") 我正在为从一页中的数据库加载的多个产品运行相同的脚本。他们每个人都有复选框,可以将其他选项相加得出总数。还在为仅选中一个复选框而苦苦挣扎。

     // FOR KEEPING ATLEAST ONE CHECKBOX CHECKED //
 $(document).ready(function(){
 var checkbox3 = "<?php echo $checkbox3;?>";
 $('input[name="'+checkbox3+'"]').click(function() {
 var checkbox4 = "<?php echo $checkbox4;?>";
    $('input[name="'+checkbox4+'"]').not(this).prop('checked', false);
 });
 var checkbox3 = "<?php echo $checkbox3;?>";
 $('input[name="'+checkbox4+'"]').click(function() {
 var checkbox4 = "<?php echo $checkbox4;?>";
    $('input[name="'+checkbox3+'"]').not(this).prop('checked', false);
 });
 });
 function displayVals() {
  calcUsage();
  var mySelect1 = "<?php echo $mySelect1; ?>";
  var singleValues = $('#'+mySelect1).val();
  var pricef1 = "<?php echo $pricef1; ?>"; 
  $('#'+pricef1).val(singleValues);
  }
  // FINAL VALUE DERIVED FROM OPTIONS AND CHECKBOXES //
  var ql1 = "<?php echo $qr1; ?>";
  var $cbs = $('input[id="'+qr1+'"]');
  function calcUsage() {
  var mySelect12 = "<?php echo $mySelect1; ?>";
  var total = $('#'+mySelect12).val();
  $cbs.each(function() {
   if (this.checked)
        total = parseInt(total) + parseInt(this.value);
   });
   var usertotal1 = "<?php echo $usertotal1; ?>";
   $('#'+usertotal1).text('R ' + total +'/day');
   }

此脚本旨在将值加在一起以得出页面上加载的每个产品的总和。

【问题讨论】:

    标签: jquery syntax


    【解决方案1】:

    您无需创建 javascript 变量来包含要用作选择器名称的字符串值,只需直接使用 PHP 回显即可。我认为您对引号和双引号感到困惑。请记住,PHP 将首先被解析,将来自 PHP 的值留在最终包含您的 javascript 的文本文件中,因此在将 php 块用作 JS 中的选择器字符串时,请将其视为结果字符串。

    我已经重构了你的代码来说明。我还简化了您的复选框选择器部分(尽管如果您想要一组可用的选项但只能选择 1 个,那么您真的应该使用单选按钮)。

    function calcUsage() {
        var total = $('#<?php echo $mySelect1; ?>').val();
        $('#<?php echo $qr1; ?>').each(function() {
            if (this.checked) {
                total = parseInt(total) + parseInt(this.value);
            }
        });
        $('#<?php echo $usertotal1; ?>').text('R '+total+'/day');
    }
    
    function displayVals() {
        calcUsage();
        var singleValues = $('#<?php echo $mySelect1; ?>').val();
        $('#<?php echo $pricef1; ?>').val(singleValues);
    }
    
    $(document).ready(function(){
        $('input[type="checkbox"]').click(function(){
            $('input[type="checkbox"]').not($(this)).prop('checked', false);
        });
    });
    

    【讨论】:

    • 感谢@touson,我已经阅读了很多使用 set var to php 变量的帖子,我想这确实增加了一些混乱,谢谢。如果我在 for 语句中使用include 在外部运行此脚本,它应该适用于$i 中的每个更改,对吗?其中$mySelect1 = "mySelect"."$i";
    • 另外我有多个复选框并使用名称查看是否仅选中了 2 个,我还将考虑切换到单选按钮。我会按如下方式使用它:$('input[name="&lt;?php echo $checkbox3"]')?
    • 您忘记了结束 php 标签:$('input[name="&lt;?php echo $checkbox3;?&gt;"]')。请记住,将 php 标记视为其结果字符串,因此此示例将呈现为 $('input[name="checkbox3namefromphp"]')
    • 哦,谢谢,我没有注意到我遗漏了结束标签。这对我有很大帮助。谢谢。
    • 如果你有兴趣我有另一个关于 Jquery 的问题,我真的可以使用 JSfiddle 的帮助 jsfiddle.net/shiataz12/mjnqth3L/1 如果你有兴趣,我真的只是想知道我要去哪里错了。
    【解决方案2】:

    试着在这一行做些小改动

    $('input[name="'+checkbox4+'"]').not(this).prop('checked', false);
    

    改成:

    $($('input[name="'+checkbox4+'"]').not(this)).prop('checked', false);
    

    【讨论】:

    • @jouston 提到引用不正确,因为它不会读取为 PHP,在这种情况下这不正确吗?
    • @Websimpleton 如果您在谈论var checkbox4 = "&lt;?php echo $checkbox4;?&gt;"; 代码行,那很好。它会起作用的。我没有发现这行代码有任何问题。甚至,您也可以将双引号更改为单引号。
    • 我指的是$($('input[name="'+checkbox4+'"]').not(this)).prop('checked', false);,在+ checkbox4 + 周围有'"' 引号可以删除吗?第二个$ infront 的目的是什么?
    • 前面这个$的目的是选择从内部代码$('input[name="'+checkbox4+'"]').not(this)出来的DOM元素
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多