【发布时间】:2012-02-22 07:37:50
【问题描述】:
我有几个关于表单和 PHP 的问题,但如果我应该将它们放到不同的帖子中,我会的。
这是我的表单代码:
<form id="t-form" name="tForm" action="translate.php" method="POST">
<div id="t-bar">
<div class="t-select">
<select name="start-lang" id="choice-button">
<option value="english">English</option>
</select>
<label>into</label>
<select name="end-lang" id="choice-button" onChange="document.forms['tForm'].submit();">
<option value="caps"<?php if ($resLang == 'caps') echo ' selected="selected"'; ?>>CAPS</option>
<option value="lowercase"<?php if ($resLang == 'lowercase') echo ' selected="selected"'; ?>>lowercase</option>
</select>
<input type="submit" id="t-submit" value="Translate">
</div>
</div>
<div id="t-main">
<textarea id="txt-source" name="t-src" autofocus="autofocus" placeholder="Type in what you would like to convert…" onChange="document.forms['tForm'].submit();"><?php echo $source; ?></textarea>
<input type="button" id="t-clear" onclick="this.form.elements['t-src'].value=''">
<textarea id="txt-result" name="txt-result" readonly disabled="disabled" placeholder="result..."><?php echo $result; ?></textarea>
<input type="button" id="t-copy" name="t-copy">
</div>
</form>
问题 1: 我目前有onclick="this.form.elements['t-src'].value=''",它会在按下按钮时清除一个文本框。是否可以在我的表单中使用相同的属性清除两个文本区域?我似乎无法在任何地方找到用 1 个按钮清除 2 个元素的答案。我不想清除表单,因为我想保留选定的下拉值,这就是我这样做的原因。
问题 2: 我该怎么做关于实现结果文本区域的实时刷新,以便用户可以简单地键入并查看结果?我已经查看了所需的 ajax 和 jquery 并且很困惑,因为大多数都没有显示如何输出到表单元素而只输出到 div。 (类似于谷歌的翻译)
问题 3: 我意识到如果用户在 textarea 中换行,当他们提交翻译时,它会给他们一个 php 标头错误。有什么想法可以避免这种情况吗?这是我在表单中使用的 translate.php 文件的标题:
header("location: /?txt-result=$result&t-src=$textSource&end-lang=$outputLang");
我只是尝试将其作为学习练习,并且非常感谢对这三个问题的任何指导或答案。非常感谢您的帮助!
【问题讨论】:
-
对于第三个问题,您必须对每个变量使用 urlencode($var)。其他两个更复杂。在第一个中,您写“我目前有....它清除了一个文本框”,那里缺少一些文本?
-
感谢您的 urlencode 提示,工作就像一个魅力!关于问题1,我继续解决了这个问题,谢谢!
-
您想如何识别要清除的文本框?他们应该有一个属于他们的类?或者你知道他们的身份证???
-
第二个问题看起来很简单,你已经有了;由于您已经将表单元素的值设置为
'',因此请使用类似的语句将表单元素的值设置为您找到示例的 ajax 代码的返回值。唯一的区别是您正在更改表单元素的值,而他们正在更改“div”的内部 html。