我有一个非常简单的问题 - 有没有办法只为某些选定的输入禁用HTML5验证(而不是为整个表单设置"novalidate")?
我的意思是像<input type='number' required无效的东西>.但这不起作用.
你可能会问为什么我需要type ="number"或"required"呢?好吧,我需要它,因为我的框架使用它进行自己的验证.
编辑
这是一个特殊的输入 - 出生数.我需要它的类型编号(因为移动设备),但它的值主要用于"/"(例如860518/8757),这对于类型编号不是有效字符.所以我需要用户填写它而不用斜线(8605188757).问题是当html5输入中填写了无效值(例如数字类型中的"fsda")时,它似乎是空的,没有值.
因此,当用户以错误的格式填充值(860518/8757)时,html验证被禁用,因此JS验证运行,它被验证为空字段.所以错误信息就像"请填写字段出生号"(这真的令人困惑),而不是"抱歉,错误的格式".
我的解决方案是为此字段启用html5验证(因此在填写错误的格式时显示默认浏览器消息)但是对其他字段禁用它,以便仅使用我的JS验证来验证它们.
我尝试在简单的应用程序上解释我的问题:
我的 MainWindow 只有一个 TextBlock。此 TextBlock 的属性文本绑定到我的类 CTimer 的属性 Seconds。在 MainWindow 中,我还有一个 DispatcherTimer 每秒做一件简单的事情 - 增加我的对象的 Seconds 属性。
主窗口.xaml:
<Window x:Class="Try.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock Name="txtTime" Text="{Binding Seconds}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="16" FontWeight="Bold"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
主窗口.xaml.cs:
public partial class MainWindow : Window
{
private CTimer timer = new CTimer();
private DispatcherTimer ticker = new DispatcherTimer();
public MainWindow()
{
InitializeComponent();
ticker.Tick += AddSeconds;
ticker.Interval = TimeSpan.FromSeconds(1);
txtTime.DataContext = timer;
ticker.Start();
}
public void AddSeconds(object sender, EventArgs e)
{
timer.Seconds++; …Run Code Online (Sandbox Code Playgroud) 这是一个我遇到问题的简单代码:
<label id="label1">
<?php
echo "Text inside label1";
?>
</label>
<script language="JavaScript" type="text/javascript">
var text = document.getElementById("label1").innerHTML;
alert(text); // show what's in variable 'text'
if(text == "Text inside label1")
{
alert("I am inside.");
}
else
{
alert("No.");
}
</script>
Run Code Online (Sandbox Code Playgroud)
问题是第一个警报显示"文本在label1内"(应该这样做),但第二个警告显示"否".当我尝试将文本写入html(而不是通过php)时,它工作正常=>第二个警报显示"我在里面.".我不知道那里有什么问题.字符串类型(php与JS)或类似的东西之间是否存在一些差异?
谢谢你的任何想法