我在 html 表中有一个相机名称列表。如果需要,您可以点击编辑按钮来编辑相机名称。
这将打开一个表单(以及许多其他选项),其中相机名称现在可编辑。
var edit = function(t, to, cameratype, cameraname, ...)
{
var mydiv = js("#editform");
if (mydiv.find("form").length) {
mydiv.show();
} else {
// fields
var $myform = js("<form id='EditCameraForm' name='' method='post' action='" + to + "'></form>");
var $myfieldset = js("<fieldset><legend>Edit camera settings</legend></fieldset>");
var $myinput = js("<input type='hidden' name='camera_type' value='" + cameratype + "' />");
var $mylabel = js("<label for='CameraName'>Camera name: </label>");
var $myinput2 = js("<input id='CameraName' name='camera_name' size='25' value='" + cameraname + "' />");
$myform.append($myinput, $mylabel, $myinput2, ...);
}
我的问题是传入相机名称。我允许特殊字符。所以你可以调用相机 Joe's camera
。
当我点击编辑按钮时,相机名称显示为 Joe
。
这与首次创建相机名称时我在 php 中的验证函数有关......我相信:
function check_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = mb_convert_encoding($data, 'UTF-8', 'UTF-8');
$data = htmlentities($data, ENT_QUOTES, 'UTF-8');
return $data;
}
相机名称通过按钮点击传入:
<button id="editbutton" onClick='edit(this, "<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>", "<?php echo $result_cameras[$i]["camera_type"]; ?>", "<?php echo $result_cameras[$i]["camera_name"]; ?>", ...)'>Edit</button>
如果您查看此页面的源代码,它将显示:Joe's camera
。所以我想也许我必须使用 decodeURIComponent(cameraname) 在 JS 代码中对此进行解码,但这不起作用。感谢您的帮助!
最佳答案
与其像现在这样构建输入框,不如尝试使用更多的 Jquery。
var $myinput = js('<input/>').attr('type','hidden').attr('name','camera_type').val(cameratype);
您的问题很可能是您在 value='"+ cameratype + "'
部分创建了双引号问题。
关于php - 缺少特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812540/