我有此代码:
$("#formulario").validate({
ignore: [],
rules: {
nome:{required: true},
contato:{required: true},
telefone:{required: true},
cidade:{required: true},
email:{required: true, email: true},
mensagem:{required: true},
},
});
它运作完美!
但是我以表格形式插入了一个称为URL的隐藏字段,并且只有在该隐藏字段为EMPTY的情况下,才应执行以上代码。
如何制作?
答案 0 :(得分:0)
假设隐藏的输入字段的ID为use actix::prelude::*;
use actix_web::{middleware, web, App, Error, HttpRequest, HttpResponse, HttpServer};
use actix_web_actors::ws;
use std::time::Duration;
fn ws_index(
r: HttpRequest,
stream: web::Payload,
data: web::Data<Addr<ServerMonitor>>,
) -> Result<HttpResponse, Error> {
let (addr, res) = ws::start_with_addr(MyWebSocket {}, &r, stream)?;
data.get_ref().do_send(RegisterWSClient { addr: addr });
Ok(res)
}
struct MyWebSocket {}
impl Actor for MyWebSocket {
type Context = ws::WebsocketContext<Self>;
}
impl StreamHandler<ws::Message, ws::ProtocolError> for MyWebSocket {
fn handle(&mut self, msg: ws::Message, ctx: &mut Self::Context) {
println!("WS: {:?}", msg);
match msg {
ws::Message::Ping(msg) => {
ctx.pong(&msg);
}
ws::Message::Pong(_) => {}
ws::Message::Text(text) => ctx.text(text),
ws::Message::Binary(bin) => ctx.binary(bin),
ws::Message::Close(_) => {
ctx.stop();
}
ws::Message::Nop => (),
}
}
}
impl Handler<ServerEvent> for MyWebSocket {
type Result = ();
fn handle(&mut self, msg: ServerEvent, ctx: &mut Self::Context) {
ctx.text(msg.event);
}
}
#[derive(Message)]
struct RegisterWSClient {
addr: Addr<MyWebSocket>,
}
#[derive(Message)]
struct ServerEvent {
event: String,
}
struct ServerMonitor {
listeners: Vec<Addr<MyWebSocket>>,
}
impl Actor for ServerMonitor {
type Context = Context<Self>;
fn started(&mut self, ctx: &mut Self::Context) {
ctx.run_interval(Duration::from_secs(5), |act, _| {
for l in &act.listeners {
l.do_send(ServerEvent{ event: String::from("Event:") });
}
});
}
}
impl Handler<RegisterWSClient> for ServerMonitor {
type Result = ();
fn handle(&mut self, msg: RegisterWSClient, _: &mut Context<Self>) {
self.listeners.push(msg.addr);
}
}
fn main() -> std::io::Result<()> {
std::env::set_var("RUST_LOG", "actix_server=info,actix_web=info");
env_logger::init();
let sys = actix_rt::System::new("example");
let srvmon = ServerMonitor { listeners: vec![] }.start();
HttpServer::new(move || {
App::new()
.data(srvmon.clone())
.wrap(middleware::Logger::default())
.service(web::resource("/ws/").route(web::get().to(ws_index)))
})
.bind("127.0.0.1:8080")?
.start();
sys.run()
}
。
您可以将函数调用包装在if条件中,在其中可以检查ID为url
的隐藏字段是否为空。
url
答案 1 :(得分:0)
您可以在jQuery验证程序中进行一些验证...
$("#formulario").validate({
ignore: [],
rules: {
newHiddenField:{maxlength: 0},
...
nome:{required: true},
contato:{required: true},
telefone:{required: true},
cidade:{required: true},
email:{required: true, email: true},
mensagem:{required: true},
}
});
或者您可以检查该字段为空,然后致电验证程序...
let isHiddenFieldEmpty = Boolean($("#formulario input[name=newHiddenField]").val().length === 0);
isHiddenFieldEmpty && $("#formulario").validate({
ignore: [],
rules: {
nome:{required: true},
contato:{required: true},
telefone:{required: true},
cidade:{required: true},
email:{required: true, email: true},
mensagem:{required: true},
}
});