Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Html 表单输入文本模式中的可选字符_Html_Node.js_Forms_Input_Ejs - Fatal编程技术网

Html 表单输入文本模式中的可选字符

Html 表单输入文本模式中的可选字符,html,node.js,forms,input,ejs,Html,Node.js,Forms,Input,Ejs,抱歉,如果其他地方回答了这个问题,请告诉我这个方向 使用Node和EJS,我有一个表单字段用于捕获啤酒厂的名称,这是通过API实现的 <label>Brewery</label><br> <input id="formBreweryName" class="form-control" type="text" name="breweryname" ><br> <label>Beer Name</label><

抱歉,如果其他地方回答了这个问题,请告诉我这个方向

使用Node和EJS,我有一个表单字段用于捕获啤酒厂的名称,这是通过API实现的

<label>Brewery</label><br>
<input id="formBreweryName" class="form-control" type="text" name="breweryname" ><br>
<label>Beer Name</label><br>
<input id="formBeerName" class="form-control" type="text" name="beername" >
以及将酿酒厂名称移植到表单的javascript

 <ul>
    <% BeerList.forEach(function(objsofbeer){ %>
       <li>
          <a onclick="addFormText( '<%= objsofbeer.brewery.brewery_name %>','<%= objsofbeer.beer.beer_name %>')">
          <span><%= objsofbeer.brewery.brewery_name %></span><br>
          <span><%= objsofbeer.beer.beer_name %></span><br>      
          </a>
       </li>
</ul>

var addFormText = function( breweryName, beerName) {
    document.getElementById('formBreweryName').value = breweryName;
    document.getElementById('formBeerName').value = beerName;
      }
API给了我一个啤酒厂的名字,就像这样

brewery_name: 'Reuben\'s Brews',
我在上面的代码中添加了啤酒的名称,这是一个很好的度量

问题

如果啤酒厂名称中有撇号,啤酒厂名称将不会显示在相应的表单字段中,但啤酒厂名称会显示在部分中

对于大多数示例,啤酒厂名称没有撇号。因此,API brewery名称将按预期显示在表单字段中。但正如上面的例子,brewery名称有一个撇号,因此该名称不会显示在my form字段中

我希望有一个非javascript的模式属性解决方案,它可以让我在文本中选择性地包含撇号(或其他不可预见的特殊字符)。如果没有,那么我愿意接受javascript或其他建议

我看到许多“使用模式排除某些字符”或“使用模式强制用户仅使用此给定文本模式”的示例。但是我看不到任何允许选择性包含像撇号这样的字符(或任何其他选择性包含特殊字符)的内容


如果这似乎是我表单输入字段之外的问题,我很乐意分享更多我的编码

不确定,但我认为问题在于重音前面需要一个双转义字符,一个用于服务器上的EJ,一个用于浏览器上的js。你能试着用一下吗


或者试着用“角色”来代替“或”

请显示您如何设置输入。你是在用JQuery,还是angular?谢谢Francesco,我添加了我认为你需要的所有代码,如果你需要更多,请告诉我。谢谢Francesco,我已经出城了,所以没有机会尝试这个。我很快会跟进的。谢谢嗨,弗朗西斯科,我已经尝试了你上面所有的建议(我希望它的输出是什么?它抛出错误
无法读取未定义的属性“replace”
,当我在代码编辑器
中查看代码时,我编辑了答案…如果这不起作用,请在渲染ejs之前尝试对BeerList对象执行相同的操作。
<ul>
<% BeerList.forEach(function(objsofbeer){ %>
<%   objsofbeer.brewery.brewery_name = objsofbeer.brewery.brewery_name.replace("'","\\'"); %>
<%   objsofbeer.beer.beer_name = objsofbeer.beer.beer_name.replace("'","\\'"); %>
   <li>
      <a onclick="addFormText( '<%= objsofbeer.brewery.brewery_name %>','<%= objsofbeer.beer.beer_name %>')">
      <span><%= objsofbeer.brewery.brewery_name %></span><br>
      <span><%= objsofbeer.beer.beer_name %></span><br>      
      </a>
   </li>