Javascript 使用验证提示,取消时返回false

Javascript 使用验证提示,取消时返回false,javascript,php,html,Javascript,Php,Html,我正在开发一个PHP web应用程序。 在显示所有类别的页面上,我想放置一个编辑提交按钮,单击事件将打开一个带有类别名称的提示按钮,如果用户需要,可以对其进行更改 我还希望对提示框(minlength='5')进行一些验证,如果用户单击“取消”按钮返回false(现在返回null)而不提交表单,那么如果验证是确定的,则单击“确定”提交带有类别id和新类别名称(提示值)的表单以更新数据 代码示例: echo "<table>"; $strCats=$con->query("SEL

我正在开发一个PHP web应用程序。
在显示所有类别的页面上,我想放置一个编辑提交按钮,单击事件将打开一个带有类别名称的提示按钮,如果用户需要,可以对其进行更改

我还希望对提示框(
minlength='5'
)进行一些验证,如果用户单击“取消”按钮返回false(现在返回null)而不提交表单,那么如果验证是确定的,则单击“确定”提交带有类别id和新类别名称(提示值)的表单以更新数据

代码示例:

echo "<table>";
$strCats=$con->query("SELECT * FROM categories ORDER BY catName");
$CatsRows=$strCats->rowCount();
if ($CatsRows==0) {
  echo "NO DATA FOUND";
}else{
  while($CatsRow = $strCats->fetch()){
    echo "<tr><td>$CatsRow[catName]</td>
    <td><button type='submit' name='btnEditCategory' value='$CatsRow[catId]' onclick='return prompt(\"Rename category\",\"$CatsRow[catName]\");'>EDIT</button></td></tr>";
  }
}
echo "</table>";
echo”“;
$strCats=$con->query(“按catName从类别订单中选择*);
$CatsRows=$strCats->rowCount();
如果($CatsRows==0){
回显“未找到数据”;
}否则{
而($CatsRow=$strCats->fetch()){
echo“$CatsRow[catName]
编辑”;
}
}
回声“;

您需要使用javascript函数,该函数在单击按钮时运行,并通过ajax提交值

<script type="text/javascript">
     function btnEditCategory(catID){
        //edit function with ajax call to edit category
     }
</script>
<input type="submit" onclick="return btnEditCategory('1');" value="Edit">

功能BTNEDITTCATEGORY(catID){
//使用ajax调用编辑类别的edit函数
}
在编辑功能中传递要编辑的类别ID

最后我解决它

if(isset("cmdEditCategory")){
  $catName = str_replace('"',"`",str_replace("'","`",$_POST['txtCatName']));
  $catId = $_POST['cmdEditCategory'];
  $sqlEditCategory=$con->prepare("UPDATE categories SET catName=? WHERE catId=?");
  $sqlEditCategory->bindParam(1, $catName, PDO::PARAM_STR, 25);
  $sqlEditCategory->bindParam(2, $catId, PDO::PARAM_INT, 11);
  if ($sqlEditCategory->execute()) {
    echo "<script type='text/javascript'>notif('success','". MSG_SUCCESS ."','". MSG_UPDATED ."');</script>";
  }else{
    echo "<script type='text/javascript'>notif('error','". MSG_WARNING ."','". MSG_ERROR ."');</script>";
  }
}
$strCats=$con->query("SELECT * FROM categories ORDER BY catName");
$CatsRows=$strCats->rowCount();
if ($CatsRows==0) {
  echo "<div class='alert alert-danger'>". MSG_NO_DATA_FOUND ."</div>";
}else{
  echo "<form action='/..$_SERVER[REQUEST_URI]' method='post'>
    <table>";
    while($CatsRow = $strCats->fetch()){
      echo "<tr><td>$CatsRow[catName]</td>
        <td>
          <button type='submit' name='cmdEditCategory' value='$CatsRow[catId]' onclick='return editCategory(\"$CatsRow[catName]\");'>". EDIT ."</button>
        </td>
      </tr>";
    }
    echo "</table>
    <div style='display:none'>
      <input type='text' id='txtCatName' name='txtCatName' />
    </div>
  </form>
  <script type='text/javascript'>
    function editCategory(catName){
      var msg = prompt('Rename category',catName);
      if(msg != null){
        document.getElementById('txtCatName').value=msg;
        return true;
      }else{
        return false;
      }
    }
  </script>";
}
if(isset(“cmdEditCategory”)){
$catName=str_replace(“”、“`”、str_replace(“”、“`、$”POST['txtCatName']);
$catId=$\u POST['cmdEditCategory'];
$sqlEditCategory=$con->prepare(“更新类别集catName=?其中catId=?”);
$sqlEditCategory->bindParam(1,$catName,PDO::PARAM_STR,25);
$sqlEditCategory->bindParam(2,$catId,PDO::PARAM_INT,11);
如果($sqlEditCategory->execute()){
回显“notif('success','”.MSG_success.,“.MSG_UPDATED.”);
}否则{
回显“notif('error','”.MSG_WARNING.',“.MSG_error.');”;
}
}
$strCats=$con->query(“按catName从类别订单中选择*);
$CatsRows=$strCats->rowCount();
如果($CatsRows==0){
回显“.MSG\u未找到任何数据”;
}否则{
回声“
";
而($CatsRow=$strCats->fetch()){
echo“$CatsRow[catName]
“.EDIT。”
";
}
回声“
函数editCategory(catName){
var msg=prompt('Rename category',catName);
如果(msg!=null){
document.getElementById('txtCatName')。value=msg;
返回true;
}否则{
返回false;
}
}
";
}

如果有其他更好的解决方案,请回复。

我知道怎么做。我的问题是:1)在提交前提示,但在取消时返回false而不是null(这一个我可以使用您使用的函数来完成)2)我可以将类别id作为按钮值传递,但我需要从prompt1传递新的类别名称1)您需要在onclick函数中添加return,这就是我将其作为解决方案添加的原因。2)您可以使用javascript提示符从prompt获取类别名称。