Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要简单JavaScript的帮助吗_Javascript - Fatal编程技术网

需要简单JavaScript的帮助吗

需要简单JavaScript的帮助吗,javascript,Javascript,我需要javascript方面的帮助。我需要创建一个名为“关键字”的隐藏输入,并编写一个JS函数,在提交表单时用复选框的值填充它 首先,我必须将“,”改为“|”,因为这是ExpressionEngine的正确语法。但由于某种原因,如果最后有一个“|”,搜索将不起作用 例如,如果我选中三个复选框,则隐藏关键字框的输出为Aberdeen | Harrisburg | Avon |,这不适用于搜索,但如果我在最后手动输入Aberdeen | Harrisburg | Avon,且不带“|”,则搜索将

我需要javascript方面的帮助。我需要创建一个名为“关键字”的隐藏输入,并编写一个JS函数,在提交表单时用复选框的值填充它


首先,我必须将“,”改为“|”,因为这是ExpressionEngine的正确语法。但由于某种原因,如果最后有一个“|”,搜索将不起作用

例如,如果我选中三个复选框,则隐藏关键字框的输出为Aberdeen | Harrisburg | Avon |,这不适用于搜索,但如果我在最后手动输入Aberdeen | Harrisburg | Avon,且不带“|”,则搜索将起作用

那么,我如何才能将这一行更改为在关键字末尾没有“|”呢 templateValues+=checkBox.value+“|”

试试这个:

<form action="sdmlsurvey.com/search/eresults"  method="post" onsubmit="populateTemplateValues()">
            <script type="text/javascript">
                function populateTemplateValues()
                {
                    var checkBoxes = document.getElementsByName("template");
                    var len = checkBoxes.length;
                    var templateValues = "";
                    for(var i=0; i<len; i++)
                    {
                        var checkBox = checkBoxes[i];
                        if(checkBox.checked)
                        templateValues += checkBox.value + "|";
                    }
                    document.getElementsByName("keywords")[0].value = templateValues.replace(/\|$/g, "");
                    alert(document.getElementsByName("keywords")[0].value );// Remove this in actual script. This is just for demo.
                    return true;
                }
            </script>
            <input type="hidden" name="keywords" value=""/>
            <input type="checkbox" name="template" value="1"/> 1<br/>
            <input type="checkbox" name="template" value="2"/> 2<br/>
            <input type="checkbox"  name="template" value="3"/> 3<br/>
            <input type="submit" value="Submit"/>
        </form>

函数populateTemplateValues()
{
var复选框=document.getElementsByName(“模板”);
var len=复选框。长度;
var templateValues=“”;

对于(var i=0;我是否使用JavaScript库?为什么?关于选中哪些复选框的信息已经发送到服务器(因为复选框将自己提交该数据)。这只是重复了工作(并且由于它增加了对JavaScript的依赖性,所以不太可靠)。我之所以需要它,是因为我正在使用ExpressionEngine搜索,并且要搜索多个术语,我需要使用JavaScript在ExpressionEngine中的关键字搜索中动态放置选中的复选框值。如果这有任何意义,则内联脚本和
onsubmit
属性会按照惯用方式被适当的外部脚本文件取代使用
document.getElementById()
和编程DOM元素挂钩。很抱歉,作为一个新手,我应该在哪里放置表单操作?除了操作值之后的;之外,其他都是正确的。删除它。但是在您的示例/演示中,我应该在哪里放置“表单操作”@Tomalak?我希望不是:)一个懒惰的程序员会带来灾难。我认为这是旧习惯和对丑陋的结构漠不关心的结合。
function removeTrailingPipe(mytext){
  mytextarray=mytext.split('|');  
  while(mytextarray[mytextarray.length-1]==''){  
    mytextarray.slice(0,mytextarray.length-1);
  }
  return mytextarray.join('|');
}

mytext='red|green|blue|yellow|';  
mytext=removeTrailingPipe(mytext);