【问题标题】:Using Em Dashes in Contact Form Arrays在联系表单数组中使用 Em 破折号
【发布时间】:2016-01-20 14:51:15
【问题描述】:

这里是新手 Web 开发人员。我正在为我的网站构建一个联系订单表格,我正在使用的相关字段使用单选按钮为用户提供 X 和 Y 之间的选项。如果我使用的是破折号,它会很好地显示在事物的视觉方面,但无论我是否使用破折号字符作为选项的值,如果有任何错误,它都不会保留该值。请允许我解释一下。

<div class="fieldwrap">
  <div class="formlabel">
    <p>Color Options<span style="color:red">*</span></p>
  </div>
  <label>
   <input type="radio" value="As shown—without logo" name="color"
   <?php  if ($fields['Color']=='As shown—without logo') echo 'checked="checked"' ; ?>>
   As shown&#8212;without logo
  </label><br>
  <label>
    <input type="radio" value="As shown—with logo" name="color" 
    <?php if ($fields['Color']=='As shown—with logo') echo 'checked ="checked"' ; ?>>
    As shown&#8212;with logo</label>
</div>

所以我试图确保它会在表单返回错误的情况下保持该选项处于选中状态,这通常是由于表单验证或用户输入不正确。

现在,这在 Chrome 和 Internet Explorer 中可以正常工作,但 Firefox 不会检查这些值。我 99% 确定这与我的 charset 属性有关,我的设置为:

<meta charset="UTF-8">

我需要做些什么才能让它在所有浏览器中正常运行有什么想法吗?

谢谢!

编辑:这是我在 Firefox 中运行 var_dump($_REQUEST); 时得到的结果。

array(15) { ["requiredinput"]=> string(0) "" ["productname"]=> string(18) "圣诞树盒" ["quantity"]=> string(2) "12 " ["size"]=> string(24) "3.75" x 2.1875" x 3.625"" ["color"]=> string(12) "无标志" ["coat"]=> string(4) "无" ["duedate"]=> string(0) "" ["jobname"]=> string(0) "" ["cmets"]=> string(0) "" ["name"]=> string(0 ) "" ["company"]=> string(0) "" ["phone"]=> string(0) "" ["fax"]=> string(0) "" ["email"]=> string (0) "" ["PHPSESSID"]=> 字符串(32) "003cb8367fd4f8dac28e9efaae8d03b4" }

【问题讨论】:

  • 注意:dash 标签指的是dash shell,而不是同名的标点符号。
  • 您应该使用更简单的值,例如with_logowithout_logo。 Em Dashes 等只需要在 UI 中,您不需要它们作为后端中的数据。

标签: javascript php em hyphen


【解决方案1】:

避免使用“用户友好”的值。相反,它应该类似于...

<input type="radio" value="nologo" name="color" /> As shown&mdash;without logo

然后,您的服务器将处理此“nologo”值,并在将其呈现给用户时,将返回一个更具可读性的内容。

显然,您如何做到这一点取决于您,但“人类数据”与“计算机数据”的一般概念是我在这里得到的。服务器不需要处理用户看到的文本。此外,这允许您更改“nologo”的确切措辞,而无需更改整个数据结构。

【讨论】:

  • 问题是,表单提交时,值会打印在邮件中。我可以想出一个解决方法,但我真的希望学习如何解决这个问题。
  • 不打印原始值。定义这些值的含义,然后在电子邮件中发送有意义的结果。
【解决方案2】:

您的无线电输入中提供的value=".."(PHP 脚本检查的)不会显示给最终用户,因此只要它们是唯一的,您将这些值设置为什么并不重要。最简单的解决方案是避免在 value 属性中使用破折号。

试试这个:

<div class="fieldwrap">
  <div class="formlabel">
    <p>Color Options<span style="color:red">*</span></p>
  </div>
  <label>
   <input type="radio" value="without" name="color"
   <?php  if ($fields['Color']=='without') echo 'checked="checked"' ; ?>>
   As shown&#8212;without logo
  </label><br>
  <label>
    <input type="radio" value="with" name="color" 
    <?php if ($fields['Color']=='with') echo 'checked ="checked"' ; ?>>
    As shown&#8212;with logo</label>
</div>

用户仍会看到破折号,因为您在单选按钮输入后将其作为文本包含在内。

【讨论】:

  • 提交表单时,这些值会打印在电子邮件中。
  • 您能否转储 $_REQUEST 字段(执行 var_dump($_REQUEST))并告诉我提交后在 Firefox 上的输出是什么?
  • 你能不能写 var_dump($_REQUEST);在你的 php 代码中然后告诉我当你提交表单时这个变量转储的结果是什么? $_REQUEST 是 PHP 变量,它保存 GET 和 POST 数据(即通过 URL 参数或通过 POST 请求传递的数据)
  • 能否显示您在 value 属性中使用 em 破折号编写的原始代码的 var_dump?看起来您使用我建议的代码显示了转储。看来您想在 value 字段中保留破折号,所以我想看看 Firefox 如何发送该数据。
  • 看来我的问题有点深了。 Firefox 发送表单很好,但通常它根本不返回任何值。我得调查一下,或者开个新帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2011-03-28
  • 2016-06-06
  • 2012-05-10
相关资源
最近更新 更多